Advertisement
Guest User

Untitled

a guest
Jan 28th, 2020
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.81 KB | None | 0 0
  1. import React, { useState,useEffect } from 'react';
  2. import moment from 'moment-timezone'
  3. import {EventNote,KeyboardArrowLeft,KeyboardArrowRight} from '@material-ui/icons'
  4. import { history } from './Routes';
  5. import ResizablePanels from './ResizeablePanels/index'
  6. import { minutesOfDay, stringToColour } from './Utilities';
  7. import { useGlobalState } from './GlobalStateMgmt/store';
  8. //2801
  9. export const ReminderListScheduler = () => {
  10.  
  11. const [dateOffsetReminders,setDateOffsetReminders] = useState(0)
  12. const [dateOffsetMeetings,setDateOffsetMeetings] = useState(0)
  13. const [dateOffsetMyMeetings,setDateOffsetMyMeetings] = useState(0)
  14. const [dateOffsetMeetingsBefore,setDateOffsetMeetingsBefore] = useState(0)
  15. const [reminders,setReminders] = useState([])
  16. const [meetings,setMeetings] = useState([])
  17. const [myMeetings,setMyMeetings] = useState([])
  18. const [premeetings,setPreMeetings] = useState([])
  19. const [userId] = useGlobalState('id')
  20. const [socket] = useGlobalState('socket')
  21.  
  22.  
  23. useEffect(() => {
  24. socket.removeListener('GET_USER_MEETINGS')
  25. socket.on('GET_USER_MEETINGS', meetings => {
  26. setMeetings(meetings.filter(i => i.userId._id != userId).sort((a,b) => minutesOfDay(a.startTime) - minutesOfDay(b.startTime)))
  27. })
  28. socket.emit('a',{name:'GET_USER_MEETINGS',data:{userId,date:moment().add(dateOffsetMeetings,'days')}})
  29. },[dateOffsetMeetings])
  30.  
  31. useEffect(() => {
  32. socket.removeListener('GET_MY_MEETINGS')
  33. socket.on('GET_MY_MEETINGS', myMeetings => {
  34. setMyMeetings(myMeetings.filter(i => i.userId._id == userId).sort((a,b) => minutesOfDay(a.startTime) - minutesOfDay(b.startTime)))
  35. })
  36. socket.emit('a',{name:'GET_MY_MEETINGS',data:{userId,date:moment().add(dateOffsetMyMeetings,'days')}})
  37. },[dateOffsetMyMeetings])
  38.  
  39. useEffect(() => {
  40. socket.removeListener('GET_USER_PREMEETINGS')
  41. socket.on('GET_USER_PREMEETINGS', premeetings => {
  42. setPreMeetings(premeetings.sort((a,b) => minutesOfDay(a.startTime) - minutesOfDay(b.startTime)))
  43. })
  44. socket.emit('a',{name:'GET_USER_PREMEETINGS',data:{userId}})
  45. },[/* dateOffsetMeetingsBefore */])
  46.  
  47. useEffect(() => {
  48. socket.removeListener('GET_USER_REMINDERS')
  49. socket.on('GET_USER_REMINDERS', reminders => {
  50. setReminders(reminders.sort((a,b) => minutesOfDay(a.startTime) - minutesOfDay(b.startTime)))
  51. })
  52. socket.emit('a',{name:'GET_USER_REMINDERS',data:{userId,date:moment().add(dateOffsetReminders,'days')}})
  53. },[dateOffsetReminders])
  54.  
  55. return (
  56.  
  57. <div style={{direction:'ltr',height:'100%',width:'100%'}}>
  58. <ResizablePanels
  59. displayDirection="row"
  60. width="100%"
  61. height="100%"
  62. panelsSize={[25, 25,25,25]}
  63. sizeUnitMeasure="%"
  64. >
  65. <div style={{height:'100%',width:'100%',display:'flex',flexDirection:'column',backgroundColor:'#448CA2',direction:'rtl'}}>
  66. <div style={{display:'flex',justifyContent:'space-between',alignItems:'center',flexDirection:'row',padding:10,borderBottom:'1px solid white',flexWrap:'wrap'}}>
  67. <div style={{display:'flex',flex:.4,textAlign:'center',color:'white',flexDirection:'row',justifyContent:'center',alignItems:'center'}}>
  68. <EventNote style={{display:'flex',flex:.3,color:'white'}} size={30} />
  69. <p style={{display:'flex',flex:.7,textAlign:'right',color:'white'}}>
  70. {
  71. `הפגישות שלי`
  72. }
  73. </p>
  74. </div>
  75. <div style={{display:'flex',flex:.3,textAlign:'center',color:'white',alignItems:'center'}}>
  76. {`${moment().add(dateOffsetMyMeetings,'days').format('DD-MM-YYYY')}`}
  77. </div>
  78. <div style={{display:'flex',flexDirection:'row',flex:.3,justifyContent:'space-around'}}>
  79. <div style={{cursor:'pointer'}} onClick={() => setDateOffsetMyMeetings(dateOffsetMyMeetings+1)}>
  80. <KeyboardArrowRight size={30} style={{color:"white"}} />
  81. </div>
  82. <div style={{cursor:'pointer'}} onClick={() => setDateOffsetMyMeetings(dateOffsetMyMeetings-1)}>
  83. <KeyboardArrowLeft size={30} style={{color:"white"}} />
  84. </div>
  85. </div>
  86. </div>
  87. <div style={{overflow:'auto'}}>
  88. {
  89. myMeetings.map(item => {
  90. return (
  91. <div onClick={() => {history.push('/app/NewMeeting',{item})} /* NavigationService.replace('NewMeeting',{item}) */} key={item._id} style={{cursor:'pointer',display:'flex',flexDirection:'column',justifyContent:'space-around',alignItems:'center',borderBottomWidth:1,padding:10,borderBottomColor:'white'}}>
  92. <div style={{display:'flex',justifyContent:'space-around',alignItems:'center',width:'100%'}}>
  93. <div style={{display:'flex',flex:.3,textAlign:'center',color:'white',whiteSpace:'pre-wrap'}}>
  94. {`${moment(item.endTime).format('HH:mm')} - ${moment(item.startTime).format('HH:mm')}\n`}
  95. {`(${item.userId.name})`}
  96. </div>
  97. <div style={{display:'flex',flex:.7,textAlign:'justify',color:'white'}}>
  98. {`פגישה בין ${item.tenantId.name}, ${item.tenantId.primaryPhone} ל${item.agentId && item.agentId.name || 'אין סוכן'}, לגבי הנכס ${item.propertyId && item.propertyId.addressId && item.propertyId.addressId.streetId.neighborhoodId.name}, ${item.propertyId && item.propertyId.addressId && item.propertyId.addressId.streetId.name} ${item.propertyId && item.propertyId.addressId && item.propertyId.addressId.streetNumber}`}
  99. </div>
  100. </div>
  101. <div style={{display:'flex',justifyContent:'space-around',alignItems:'center',width:'100%'}}>
  102. <div style={{display:'flex',flex:.3,textAlign:'center',color:'white'}}>
  103.  
  104. </div>
  105. <div style={{display:'flex',flex:.7,textAlign:'justify',color:'white'}}>
  106. <p style={{color:'white'}}>{`${item.comment}`}</p>
  107. </div>
  108. </div>
  109. </div>
  110. )
  111. })
  112. }
  113. </div>
  114. </div>
  115.  
  116. <div style={{height:'100%',width:'100%',display:'flex',flexDirection:'column',backgroundColor:'#448CA2',direction:'rtl'}}>
  117. <div style={{display:'flex',justifyContent:'space-between',alignItems:'center',flexDirection:'row',padding:10,borderBottom:'1px solid white',flexWrap:'wrap'}}>
  118. <div style={{display:'flex',flex:.4,textAlign:'center',color:'white',flexDirection:'row',justifyContent:'center',alignItems:'center'}}>
  119. <EventNote style={{display:'flex',flex:.3,color:'white'}} size={30} />
  120. <p style={{display:'flex',flex:.7,textAlign:'right',color:'white'}}>
  121. {
  122. `כל הפגישות`
  123. }
  124. </p>
  125. </div>
  126. <div style={{display:'flex',flex:.3,textAlign:'center',color:'white',alignItems:'center'}}>
  127. {`${moment().add(dateOffsetMeetings,'days').format('DD-MM-YYYY')}`}
  128. </div>
  129. <div style={{display:'flex',flexDirection:'row',flex:.3,justifyContent:'space-around'}}>
  130. <div style={{cursor:'pointer'}} onClick={() => setDateOffsetMeetings(dateOffsetMeetings+1)}>
  131. <KeyboardArrowRight size={30} style={{color:"white"}} />
  132. </div>
  133. <div style={{cursor:'pointer'}} onClick={() => setDateOffsetMeetings(dateOffsetMeetings-1)}>
  134. <KeyboardArrowLeft size={30} style={{color:"white"}} />
  135. </div>
  136. </div>
  137. </div>
  138. <div style={{overflow:'auto'}}>
  139. {
  140. meetings.map(item => {
  141. return (
  142. <div onClick={() => {
  143. if (userId == item.tenantId.createdBy)
  144. history.push('/app/NewMeeting',{item})
  145. } /* NavigationService.replace('NewMeeting',{item}) */} key={item._id} style={{
  146. cursor:'pointer',display:'flex',flexDirection:'column',justifyContent:'space-around',alignItems:'center',
  147. borderBottomWidth:1,padding:10,borderBottomColor:'white',color:stringToColour(item.userId.name),
  148. textShadow:'1px 1px 1px #000,1px 1px 1px #000,1px 1px 1px #000, 1px 1px 1px #000'
  149. }}>
  150. <div style={{display:'flex',justifyContent:'space-around',alignItems:'center',width:'100%'}}>
  151. <div style={{display:'flex',flex:.3,textAlign:'center',whiteSpace:'pre-wrap'}}>
  152. {`${moment(item.endTime).format('HH:mm')} - ${moment(item.startTime).format('HH:mm')}\n`}
  153. {`(${item.userId.name})`}
  154. </div>
  155. <div style={{display:'flex',flex:.7,textAlign:'justify'}}>
  156. {`פגישה בין ${item.tenantId.name}, ${item.tenantId.primaryPhone} ל${item.agentId && item.agentId.name || 'אין סוכן'}, לגבי הנכס ${item.propertyId && item.propertyId.addressId && item.propertyId.addressId.streetId.neighborhoodId.name}, ${item.propertyId && item.propertyId.addressId && item.propertyId.addressId.streetId.name} ${item.propertyId && item.propertyId.addressId && item.propertyId.addressId.streetNumber}`}
  157. </div>
  158. </div>
  159. <div style={{display:'flex',justifyContent:'space-around',alignItems:'center',width:'100%'}}>
  160. <div style={{display:'flex',flex:.3,textAlign:'center',color:'white'}}>
  161.  
  162. </div>
  163. <div style={{display:'flex',flex:.7,textAlign:'justify'}}>
  164. {`${item.comment}`}
  165. </div>
  166. </div>
  167. </div>
  168. )
  169. })
  170. }
  171. </div>
  172. </div>
  173.  
  174. <div style={{height:'100%',width:'100%',display:'flex',flexDirection:'column',backgroundColor:'#448CA2',direction:'rtl'}}>
  175. <div style={{display:'flex',justifyContent:'space-between',alignItems:'center',flexDirection:'row',padding:10,borderBottom:'1px solid white',flexWrap:'wrap'}}>
  176. <div style={{display:'flex',flex:.4,textAlign:'center',color:'white',flexDirection:'row',justifyContent:'center',alignItems:'center'}}>
  177. <EventNote style={{display:'flex',flex:.3,color:'white'}} size={30} />
  178. <p style={{display:'flex',flex:.7,textAlign:'right',color:'white'}}>
  179. {
  180. `בקשות לפגישות`
  181. }
  182. </p>
  183. </div>
  184. <div style={{display:'flex',flex:.3,textAlign:'center',color:'white',alignItems:'center'}}>
  185. {`${moment().add(dateOffsetMeetingsBefore,'days').format('DD-MM-YYYY')}`}
  186. </div>
  187. <div style={{display:'flex',flexDirection:'row',flex:.3,justifyContent:'space-around'}}>
  188. <div style={{cursor:'pointer'}} onClick={() => setDateOffsetMeetingsBefore(dateOffsetMeetingsBefore+1)}>
  189. <KeyboardArrowRight size={30} style={{color:"white"}} />
  190. </div>
  191. <div style={{cursor:'pointer'}} onClick={() => setDateOffsetMeetingsBefore(dateOffsetMeetingsBefore-1)}>
  192. <KeyboardArrowLeft size={30} style={{color:"white"}} />
  193. </div>
  194. </div>
  195. </div>
  196. <div style={{overflow:'auto'}}>
  197. {
  198. premeetings.map(item =>{
  199. let str = ''
  200. str = (`לקבוע פגישה עם ${item.tenantId.name}, ${item.tenantId.primaryPhone} לגבי הנכס ${item.propertyId && item.propertyId.addressId &&item.propertyId.addressId.streetId.neighborhoodId.name}, ${item.propertyId && item.propertyId.addressId &&item.propertyId.addressId.streetId.name} ${item.propertyId && item.propertyId.addressId &&item.propertyId.addressId.streetNumber}`)
  201. return (
  202. <div onClick={() => {history.push('/app/NewMeetingRequest',{item})} /* NavigationService.replace('NewMeeting',{item}) */} key={item._id} style={{cursor:'pointer',display:'flex',flexDirection:'column',justifyContent:'space-around',alignItems:'center',borderBottomWidth:1,padding:10,borderBottomColor:'white'}}>
  203. <div style={{display:'flex',justifyContent:'space-around',alignItems:'center',width:'100%'}}>
  204. <div style={{display:'flex',flex:.2,textAlign:'center',color:'white'}}>
  205. {`(${item.userId.name})`}
  206. </div>
  207. <div style={{display:'flex',flex:.8,textAlign:'justify',color:'white'}}>
  208. {`${str}`}
  209. </div>
  210. </div>
  211. <div style={{display:'flex',justifyContent:'space-around',alignItems:'center',width:'100%'}}>
  212. <div style={{display:'flex',flex:.2,textAlign:'center',color:'white'}}>
  213.  
  214. </div>
  215. <div style={{display:'flex',flex:.8,textAlign:'justify',color:'white'}}>
  216. <p style={{color:'white'}}>{`${item.comment}`}</p>
  217. </div>
  218. </div>
  219. </div>
  220. )
  221. })
  222. }
  223. </div>
  224. </div>
  225.  
  226.  
  227. <div style={{height:'100%',width:'100%',display:'flex',flexDirection:'column',backgroundColor:'#448CA2',direction:'rtl'}}>
  228. <div style={{display:'flex',justifyContent:'space-between',alignItems:'center',flexDirection:'row',padding:10,borderBottom:'1px solid white',flexWrap:'wrap'}}>
  229. <div style={{display:'flex',flex:.4,textAlign:'center',color:'white',flexDirection:'row',justifyContent:'center',alignItems:'center'}}>
  230. <EventNote style={{display:'flex',flex:.3,color:'white'}} size={30} />
  231. <p style={{display:'flex',flex:.7,textAlign:'right',color:'white'}}>
  232. {
  233. `תזכורות`
  234. }
  235. </p>
  236. </div>
  237. <div style={{display:'flex',flex:.3,textAlign:'center',color:'white',alignItems:'center'}}>
  238. {`${moment().add(dateOffsetReminders,'days').format('DD-MM-YYYY')}`}
  239. </div>
  240. <div style={{display:'flex',flexDirection:'row',flex:.3,justifyContent:'space-around'}}>
  241. <div style={{cursor:'pointer'}} onClick={() => setDateOffsetReminders(dateOffsetReminders+1)}>
  242. <KeyboardArrowRight size={30} style={{color:"white"}} />
  243. </div>
  244. <div style={{cursor:'pointer'}} onClick={() => setDateOffsetReminders(dateOffsetReminders-1)}>
  245. <KeyboardArrowLeft size={30} style={{color:"white"}} />
  246. </div>
  247. </div>
  248. </div>
  249. <div style={{overflow:'auto'}}>
  250. {
  251. reminders.map(item => {
  252. let str = ''
  253. if (item.propertyId && item.tenantId){
  254. str += `לחזור ל ${`לחזור ל${item.tenantId.name}, ${item.tenantId.primaryPhone}${item.tenantId.secondaryPhone ? `, ${item.tenantId.secondaryPhone}`:``}`}`
  255. str += ` לגבי הנכס: ${item.propertyId && item.propertyId.addressId &&item.propertyId.addressId.streetId.neighborhoodId.name}, ${item.propertyId && item.propertyId.addressId &&item.propertyId.addressId.streetId.name} ${item.propertyId && item.propertyId.addressId &&item.propertyId.addressId.streetNumber}, ${item.propertyId && item.propertyId.addressId &&item.propertyId.renterId && item.propertyId.renterId.name}, ${item.propertyId && item.propertyId.renterId && item.propertyId.renterId.primaryPhone}`
  256. }
  257. else if (item.propertyId){
  258. str += `לחזור ל${item.propertyId.renterId && item.propertyId.renterId.name}, ${item.propertyId.renterId && item.propertyId.renterId.primaryPhone}, הנכס: ${item.propertyId && item.propertyId.addressId &&item.propertyId.addressId.streetId.neighborhoodId.name}, ${item.propertyId.addressId.streetId.name} ${item.propertyId && item.propertyId.addressId &&item.propertyId.addressId.streetNumber}`
  259.  
  260. }
  261. else if (item.tenantId){
  262. str += `${`לחזור ל${item.tenantId.name}, ${item.tenantId.primaryPhone}${item.tenantId.secondaryPhone ? `, ${item.tenantId.secondaryPhone}`:``}`}`
  263. }
  264.  
  265. return(
  266. <div onClick={() => {history.push('/app/NewReminder',{item})}/* NavigationService.replace('NewReminder',{item}) */} key={item._id} style={{cursor:'pointer',display:'flex',justifyContent:'space-around',alignItems:'center',borderBottomWidth:1,flexDirection:'row',padding:10,borderBottomColor:'white'}}>
  267. <div style={{display:'flex',flex:.3,textAlign:'center',color:'white'}}>
  268. {`${moment(item.endTime).format('HH:mm')} - ${moment(item.startTime).format('HH:mm')}`}
  269. </div>
  270. <div style={{display:'flex',flex:.7,textAlign:'justify',color:'white'}}>
  271. {`${str || ''} - ${item.comment}`}
  272. </div>
  273. </div>
  274. )
  275. })
  276. }
  277. </div>
  278. </div>
  279. </ResizablePanels>
  280. </div>
  281. )
  282. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement