PageRenderTime 46ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 1ms

/SLSTOffCampusWeb/Controllers/HomeController.cs

https://bitbucket.org/jrobertshawe/off-campus-server
C# | 3176 lines | 2907 code | 259 blank | 10 comment | 500 complexity | 579f8f47781ea01b63900bff0bb966d9 MD5 | raw file

Large files files are truncated, but you can click here to view the full file

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.Mvc;
  6. using Newtonsoft.Json;
  7. using SLSTOffCampusWeb.Models;
  8. using System.Xml;
  9. using System.Xml.Linq;
  10. using SLSTOffCampusWeb.ABSAMPDetails;
  11. using System.Web.Script.Serialization;
  12. using System.Text;
  13. using System.Data.Linq;
  14. namespace SLSTOffCampusWeb.Controllers
  15. {
  16. public class HomeController : Controller
  17. {
  18. private Entities db = new Entities();
  19. public ActionResult Index()
  20. {
  21. return Json("success");
  22. }
  23. #region Image
  24. public ActionResult SaveImage(HttpPostedFileBase imageFile, string fileName)
  25. {
  26. if (imageFile != null)
  27. {
  28. Image image = new Image();
  29. var binary = new byte[imageFile.ContentLength];
  30. imageFile.InputStream.Read(binary, 0, imageFile.ContentLength);
  31. image.fileName = imageFile.FileName;
  32. image.imgData = binary;
  33. db.Images.Add(image);
  34. db.SaveChanges();
  35. }
  36. return Content("success");
  37. }
  38. public ActionResult GetImage(string filename)
  39. {
  40. // The Name of the Upload component is "files"
  41. Image image = db.Images.SingleOrDefault(i => i.fileName == filename);
  42. if (image != null)
  43. {
  44. if (image.imgData == null)
  45. return HttpNotFound();
  46. byte[] imageData = image.imgData.ToArray();
  47. return new FileStreamResult(new System.IO.MemoryStream(imageData), "image/png");
  48. }
  49. return HttpNotFound();
  50. }
  51. #endregion
  52. #region ABSAMP
  53. public ActionResult UpdateABSAMPLocation()
  54. {
  55. var locations = db.LocationTemplates;
  56. foreach (LocationTemplate location in locations)
  57. {
  58. try
  59. {
  60. BeachDetailsPortTypeClient absamp = new BeachDetailsPortTypeClient();
  61. ctAuthentication auth = new ctAuthentication();
  62. auth.username = "alivemobile";
  63. auth.password = "Al1v3M081le";
  64. string beachString = absamp.getBeachDetails(auth, location.beachKey, location.name);
  65. XDocument doc = XDocument.Parse(beachString);
  66. IEnumerable<XElement> rootCategory = doc.Descendants("Beach");
  67. string Latitude = rootCategory.Descendants("Latitude").FirstOrDefault().Value;
  68. string Longitude = rootCategory.Descendants("Longitude").FirstOrDefault().Value;
  69. string Description = rootCategory.Descendants("Description").FirstOrDefault().Value;
  70. string HazardRating = rootCategory.Descendants("HazardRating").FirstOrDefault().Value;
  71. location.notes = Description;
  72. location.latitude = Latitude;
  73. location.longitude = Longitude;
  74. location.hazardRating = HazardRating;
  75. }
  76. catch
  77. {
  78. }
  79. }
  80. db.SaveChanges();
  81. return Json("success");
  82. }
  83. public ActionResult RebuildABSAMPList()
  84. {
  85. string key;
  86. string name;
  87. SLSTOffCampusWeb.ABSAMP.BeachBasicsPortTypeClient absamp = new SLSTOffCampusWeb.ABSAMP.BeachBasicsPortTypeClient();
  88. SLSTOffCampusWeb.ABSAMP.ctAuthentication auth = new SLSTOffCampusWeb.ABSAMP.ctAuthentication();
  89. auth.username = "alivemobile";
  90. auth.password = "Al1v3M081le";
  91. string beaches = absamp.getBeachList(auth);
  92. XmlReaderSettings set = new XmlReaderSettings();
  93. XDocument doc = XDocument.Parse(beaches);
  94. IEnumerable<XElement> rootCategory = doc.Descendants("Beach");
  95. foreach (XElement childBeach in rootCategory)
  96. {
  97. key = childBeach.Attribute("key").Value;
  98. name = childBeach.Attribute("name").Value;
  99. if (key.ToUpper().Contains("TAS") == true)
  100. {
  101. if (db.LocationTemplates.SingleOrDefault(b => b.beachKey == key) == null)
  102. {
  103. LocationTemplate template = new LocationTemplate();
  104. template.beachKey = key;
  105. template.name = name;
  106. db.LocationTemplates.Add(template);
  107. db.SaveChanges();
  108. }
  109. }
  110. }
  111. return Json("success");
  112. }
  113. #endregion
  114. #region Interface
  115. [HttpPost]
  116. public ActionResult StoreFeedback(FormCollection collection)
  117. {
  118. string json = collection["json"];
  119. if (json == null)
  120. return Json("failure", JsonRequestBehavior.AllowGet);
  121. DateTime latestTime = DateTime.MinValue;
  122. FeedBackRequest requestItem = JsonConvert.DeserializeObject<FeedBackRequest>(json);
  123. Feedback feedback = new Feedback();
  124. feedback.name = requestItem.name;
  125. feedback.email = requestItem.email;
  126. feedback.title = requestItem.title;
  127. feedback.description = requestItem.description;
  128. feedback.created = DateTime.Now;
  129. db.Feedbacks.Add(feedback);
  130. db.SaveChanges();
  131. return Json("success");
  132. }
  133. [HttpPost]
  134. public ActionResult registerUser(FormCollection collection)
  135. {
  136. string json = collection["json"];
  137. registerUser requestItem = JsonConvert.DeserializeObject<registerUser>(json);
  138. registerUserResponseModel responsejson = new registerUserResponseModel();
  139. Teacher userrecord = db.Teachers.SingleOrDefault(i => i.email == requestItem.email);
  140. if (userrecord != null)
  141. {
  142. responsejson.errorMsg = "Email already exists";
  143. responsejson.error = 1;
  144. return Json(responsejson);
  145. }
  146. userrecord = new Teacher();
  147. userrecord.email = requestItem.email;
  148. userrecord.password = requestItem.password;
  149. userrecord.firstname = requestItem.firstname;
  150. userrecord.lastname = requestItem.lastname;
  151. responsejson.error = 0;
  152. db.Teachers.Add(userrecord);
  153. db.SaveChanges();
  154. return Json(responsejson);
  155. }
  156. [HttpPost]
  157. public ActionResult loginUser(FormCollection collection)
  158. {
  159. string json = collection["json"];
  160. registerUser requestItem = JsonConvert.DeserializeObject<registerUser>(json);
  161. registerUserResponseModel responsejson = new registerUserResponseModel();
  162. Teacher userrecord = db.Teachers.SingleOrDefault(i => i.email.ToLower() == requestItem.email.ToLower() && i.password == requestItem.password);
  163. if (userrecord == null)
  164. {
  165. responsejson.errorMsg = "Email or password is not valid";
  166. responsejson.error = 1;
  167. return Json(responsejson);
  168. }
  169. responsejson.error = 0;
  170. responsejson.token = userrecord.id.ToString();
  171. return Json(responsejson);
  172. }
  173. [HttpPost]
  174. public ActionResult forgotPassword(FormCollection collection)
  175. {
  176. string json = collection["json"];
  177. registerUser requestItem = JsonConvert.DeserializeObject<registerUser>(json);
  178. registerUserResponseModel responsejson = new registerUserResponseModel();
  179. user userrecord = db.users.SingleOrDefault(i => i.email == requestItem.email);
  180. if (userrecord == null)
  181. {
  182. responsejson.errorMsg = "Email is not valid";
  183. responsejson.error = 1;
  184. return Json(responsejson);
  185. }
  186. responsejson.error = 0;
  187. return Json(responsejson);
  188. }
  189. [HttpPost]
  190. public ActionResult SyncRecordRequest(FormCollection collection)
  191. {
  192. string json = collection["json"];
  193. if (json == null)
  194. return Json("failure", JsonRequestBehavior.AllowGet);
  195. SyncObjectRequestModel requestItem = JsonConvert.DeserializeObject<SyncObjectRequestModel>(json);
  196. SyncRecordResponseModel response = new SyncRecordResponseModel();
  197. response.status.error = 1;
  198. response.status.errorMsg = "failed";
  199. if (requestItem.action == null)
  200. {
  201. response.status.error = 1;
  202. response.status.errorMsg = "no command set";
  203. return Json(response);
  204. }
  205. switch (requestItem.action.ToUpper())
  206. {
  207. case "ADD":
  208. response = AddRecord(requestItem);
  209. break;
  210. case "UPDATE":
  211. response = UpdateRecord(requestItem);
  212. break;
  213. case "DELETE":
  214. response = DeleteRecord(requestItem);
  215. break;
  216. default:
  217. response = new SyncRecordResponseModel();
  218. response.status.error = 1;
  219. response.status.errorMsg = "Action is not valid";
  220. break;
  221. }
  222. return Json(response);
  223. }
  224. [HttpPost]
  225. public ActionResult SyncChangesRequest(FormCollection collection)
  226. {
  227. string json = collection["json"];
  228. if (json == null)
  229. return Json("failure", JsonRequestBehavior.AllowGet);
  230. SyncChangesRequestModel requestItem = JsonConvert.DeserializeObject<SyncChangesRequestModel>(json);
  231. SyncChangesResponse response = new SyncChangesResponse();
  232. response.status.error = 1;
  233. response.status.errorMsg = "failed";
  234. DateTime latestTime = DateTime.MinValue;
  235. DateTime requestTime = DateTime.MinValue;
  236. DateTime tableTime = DateTime.MinValue;
  237. DateTime tempDate;
  238. try
  239. {
  240. requestTime = DateTime.Parse(requestItem.updateTime);
  241. latestTime = requestTime;
  242. }
  243. catch
  244. {
  245. }
  246. #region LOCATIONTEMPLATE
  247. var locationTemplateFound = db.LocationTemplates.Where(b => b.modified > requestTime && b.riskType != null);
  248. if (locationTemplateFound.Count() > 0)
  249. {
  250. foreach (LocationTemplate locationTemplate in locationTemplateFound)
  251. {
  252. ResponseRecordModel item = new ResponseRecordModel();
  253. item.record.tableName = "LocationTemplate";
  254. item.record.serverId = locationTemplate.id.ToString();
  255. item.record.recordData.Add("address", locationTemplate.address);
  256. item.record.recordData.Add("locationType", locationTemplate.locationType);
  257. item.record.recordData.Add("beachKey", locationTemplate.beachKey);
  258. item.record.recordData.Add("category", locationTemplate.category);
  259. item.record.recordData.Add("facilities", locationTemplate.facilities);
  260. item.record.recordData.Add("hazardRating", locationTemplate.hazardRating);
  261. item.record.recordData.Add("latitude", locationTemplate.latitude);
  262. item.record.recordData.Add("longitude", locationTemplate.longitude);
  263. item.record.recordData.Add("name", locationTemplate.name);
  264. item.record.recordData.Add("notes", locationTemplate.notes);
  265. item.record.recordData.Add("riskType", locationTemplate.riskType);
  266. item.record.recordData.Add("delete", locationTemplate.deleted.ToString());
  267. response.response.record.Add(item);
  268. }
  269. tableTime = (DateTime)(from d in db.LocationTemplates select d.modified).Max();
  270. int i = DateTime.Compare(latestTime, tableTime);
  271. if (i < 0) //latesttime is less than tabletime
  272. latestTime = tableTime;
  273. }
  274. #endregion
  275. #region SCHOOLRESPONSE
  276. var schoolFound = db.Schools.Where(b => b.modified > requestTime);
  277. if (schoolFound.Count() > 0)
  278. {
  279. foreach (School school in schoolFound)
  280. {
  281. ResponseRecordModel item = new ResponseRecordModel();
  282. item.record.tableName = "School";
  283. item.record.serverId = school.id.ToString();
  284. item.record.recordData.Add("fax", school.fax);
  285. item.record.recordData.Add("name", school.name);
  286. item.record.recordData.Add("phone", school.phone);
  287. item.record.recordData.Add("postaladdress", school.postaladdress);
  288. item.record.recordData.Add("streetaddress", school.streetaddress);
  289. item.record.recordData.Add("category", school.category);
  290. item.record.recordData.Add("delete", school.deleted.ToString());
  291. item.record.recordData.Add("approverEmail", school.approverEmail);
  292. item.record.recordData.Add("approverName", school.approverName);
  293. response.response.record.Add(item);
  294. }
  295. tableTime = (DateTime)(from d in db.Schools select d.modified).Max();
  296. int i = DateTime.Compare(latestTime, tableTime);
  297. if (i < 0) //latesttime is less than tabletime
  298. latestTime = tableTime;
  299. }
  300. #endregion
  301. #region TEACHERRESPONSE
  302. var teacherFound = db.Teachers.Where(b => b.modified > requestTime);
  303. if (teacherFound.Count() > 0)
  304. {
  305. foreach (Teacher teacher in teacherFound)
  306. {
  307. ResponseRecordModel item = new ResponseRecordModel();
  308. item.parent.tableName = "School";
  309. item.parent.serverId = teacher.schoolId.ToString();
  310. item.record.tableName = "Teacher";
  311. item.record.serverId = teacher.id.ToString();
  312. item.record.recordData.Add("firstname", teacher.firstname);
  313. item.record.recordData.Add("lastname", teacher.lastname);
  314. item.record.recordData.Add("password", teacher.password);
  315. item.record.recordData.Add("email", teacher.email);
  316. item.record.recordData.Add("avatar", teacher.avatar);
  317. item.record.recordData.Add("parentId", teacher.schoolId.ToString());
  318. item.record.recordData.Add("delete", teacher.deleted.ToString());
  319. response.response.record.Add(item);
  320. }
  321. latestTime = (DateTime)(from d in db.Teachers select d.modified).Max();
  322. int i = DateTime.Compare(latestTime, tableTime);
  323. if (i < 0) //latesttime is less than tabletime
  324. latestTime = tableTime;
  325. }
  326. #endregion
  327. #region ACTIVITY
  328. var activityFound = db.Activities.Where(b => b.modified > requestTime);
  329. if (activityFound.Count() > 0)
  330. {
  331. foreach (Activity activity in activityFound)
  332. {
  333. ResponseRecordModel item = new ResponseRecordModel();
  334. item.record.tableName = "Activity";
  335. item.parent.tableName = "Teacher";
  336. item.parent.serverId = activity.Teacher.id.ToString();
  337. item.record.serverId = activity.id.ToString();
  338. item.record.recordData.Add("status", activity.status);
  339. if (activity.dateEnd != null)
  340. {
  341. tempDate = (DateTime)activity.dateEnd;
  342. item.record.recordData.Add("dateEnd", tempDate.ToString("s"));
  343. }
  344. if (activity.dateStart != null)
  345. {
  346. tempDate = (DateTime)activity.dateStart;
  347. item.record.recordData.Add("dateStart", tempDate.ToString("s"));
  348. }
  349. item.record.recordData.Add("name", activity.name);
  350. item.record.recordData.Add("type", activity.type);
  351. item.record.recordData.Add("numberOfStudents", activity.numberOfStudents.ToString());
  352. item.record.recordData.Add("schoolClasName", activity.schoolClasName);
  353. item.record.recordData.Add("approverComment", activity.approverComment);
  354. item.record.recordData.Add("parentId", activity.teacherId.ToString());
  355. item.record.recordData.Add("delete", activity.deleted.ToString());
  356. response.response.record.Add(item);
  357. }
  358. latestTime = (DateTime)(from d in db.Activities select d.modified).Max();
  359. int i = DateTime.Compare(latestTime, tableTime);
  360. if (i < 0) //latesttime is less than tabletime
  361. latestTime = tableTime;
  362. }
  363. #endregion
  364. #region LOCATION
  365. var locationfound = db.Locations.Where(b => b.modified > requestTime);
  366. if (locationfound.Count() > 0)
  367. {
  368. foreach (Location location in locationfound)
  369. {
  370. ResponseRecordModel item = new ResponseRecordModel();
  371. item.record.tableName = "Location";
  372. item.parent.tableName = "Activity";
  373. item.parent.serverId = location.Activity.id.ToString();
  374. item.record.serverId = location.id.ToString();
  375. item.record.recordData.Add("address", location.address);
  376. item.record.recordData.Add("facilities", location.facilities);
  377. item.record.recordData.Add("latitude", location.latitude);
  378. item.record.recordData.Add("longitude", location.longitude);
  379. item.record.recordData.Add("name", location.name);
  380. item.record.recordData.Add("notes", location.notes);
  381. item.record.recordData.Add("riskType", location.riskType);
  382. if (location.isPrimary != null)
  383. item.record.recordData.Add("isPrimary", location.isPrimary.ToString());
  384. if (location.hazardRating != null)
  385. item.record.recordData.Add("hazardRating", location.hazardRating.ToString());
  386. item.record.recordData.Add("parentId", location.activityId.ToString());
  387. item.record.recordData.Add("delete", location.deleted.ToString());
  388. response.response.record.Add(item);
  389. }
  390. latestTime = (DateTime)(from d in db.Teachers select d.modified).Max();
  391. int i = DateTime.Compare(latestTime, tableTime);
  392. if (i < 0) //latesttime is less than tabletime
  393. latestTime = tableTime;
  394. }
  395. #endregion
  396. #region ACCREDITATION
  397. var accreditationfound = db.Accreditations.Where(b => b.modified > requestTime);
  398. if (accreditationfound.Count() > 0)
  399. {
  400. foreach (Accreditation accreditation in accreditationfound)
  401. {
  402. ResponseRecordModel item = new ResponseRecordModel();
  403. item.record.tableName = "Accreditation";
  404. item.parent.tableName = "Teacher";
  405. item.parent.serverId = accreditation.Teacher.id.ToString();
  406. item.record.serverId = accreditation.id.ToString();
  407. item.record.recordData.Add("name", accreditation.name);
  408. item.record.recordData.Add("reminderEnabled", accreditation.reminderEnabled.ToString());
  409. if (accreditation.renewalDate != null)
  410. {
  411. tempDate = (DateTime)accreditation.renewalDate;
  412. item.record.recordData.Add("renewalDate", tempDate.Date.ToString("s"));
  413. }
  414. item.record.recordData.Add("parentId", accreditation.teacherId.ToString());
  415. item.record.recordData.Add("delete", accreditation.deleted.ToString());
  416. response.response.record.Add(item);
  417. }
  418. latestTime = (DateTime)(from d in db.Accreditations select d.modified).Max();
  419. int i = DateTime.Compare(latestTime, tableTime);
  420. if (i < 0) //latesttime is less than tabletime
  421. latestTime = tableTime;
  422. }
  423. #endregion
  424. #region TEACHERSUPPORT
  425. var teacherSupportfound = db.TeacherSupports.Where(b => b.modified > requestTime);
  426. if (teacherSupportfound.Count() > 0)
  427. {
  428. foreach (TeacherSupport teacherSupport in teacherSupportfound)
  429. {
  430. ResponseRecordModel item = new ResponseRecordModel();
  431. item.record.tableName = "TeacherSupport";
  432. item.parent.tableName = "Activity";
  433. item.parent.serverId = teacherSupport.Activity.id.ToString();
  434. item.record.serverId = teacherSupport.id.ToString();
  435. item.record.recordData.Add("email", teacherSupport.email);
  436. item.record.recordData.Add("parentId", teacherSupport.activityId.ToString());
  437. item.record.recordData.Add("delete", teacherSupport.deleted.ToString());
  438. response.response.record.Add(item);
  439. }
  440. latestTime = (DateTime)(from d in db.TeacherSupports select d.modified).Max();
  441. int i = DateTime.Compare(latestTime, tableTime);
  442. if (i < 0) //latesttime is less than tabletime
  443. latestTime = tableTime;
  444. }
  445. #endregion
  446. #region COMMENT
  447. var commentfound = db.Comments.Where(b => b.modified > requestTime);
  448. if (commentfound.Count() > 0)
  449. {
  450. foreach (Comment comment in commentfound)
  451. {
  452. ResponseRecordModel item = new ResponseRecordModel();
  453. item.record.tableName = "Comment";
  454. item.record.serverId = comment.id.ToString();
  455. item.parent.tableName = "Activity";
  456. item.parent.serverId = comment.Activity.id.ToString();
  457. if (comment.date != null)
  458. {
  459. tempDate = (DateTime)comment.date;
  460. item.record.recordData.Add("renewalDate", tempDate.Date.ToString("s"));
  461. }
  462. item.record.recordData.Add("comment", comment.comment1);
  463. item.record.recordData.Add("parentId", comment.activityId.ToString());
  464. item.record.recordData.Add("delete", comment.deleted.ToString());
  465. response.response.record.Add(item);
  466. }
  467. latestTime = (DateTime)(from d in db.Comments select d.modified).Max();
  468. int i = DateTime.Compare(latestTime, tableTime);
  469. if (i < 0) //latesttime is less than tabletime
  470. latestTime = tableTime;
  471. }
  472. #endregion
  473. #region ActivityLogNote
  474. var activityLogNotesFond = db.ActivityLogNotes.Where(b => b.modified > requestTime);
  475. if (activityLogNotesFond.Count() > 0)
  476. {
  477. foreach (ActivityLogNote activityLogNote in activityLogNotesFond)
  478. {
  479. ResponseRecordModel item = new ResponseRecordModel();
  480. item.record.tableName = "ActivityLogNote";
  481. item.record.serverId = activityLogNote.id.ToString();
  482. item.parent.tableName = "Activity";
  483. item.parent.serverId = activityLogNote.Activity.id.ToString();
  484. if (activityLogNote.date != null)
  485. {
  486. tempDate = (DateTime)activityLogNote.date;
  487. item.record.recordData.Add("date", tempDate.Date.ToString("s"));
  488. }
  489. item.record.recordData.Add("avatar", activityLogNote.avatar);
  490. item.record.recordData.Add("logNote", activityLogNote.logNote);
  491. item.record.recordData.Add("name", activityLogNote.name);
  492. item.record.recordData.Add("parentId", activityLogNote.activityId.ToString());
  493. item.record.recordData.Add("delete", activityLogNote.deleted.ToString());
  494. response.response.record.Add(item);
  495. }
  496. latestTime = (DateTime)(from d in db.ActivityLogNotes select d.modified).Max();
  497. int i = DateTime.Compare(latestTime, tableTime);
  498. if (i < 0) //latesttime is less than tabletime
  499. latestTime = tableTime;
  500. }
  501. #endregion
  502. #region NOTE
  503. var notefound = db.Notes.Where(b => b.modified > requestTime);
  504. if (notefound.Count() > 0)
  505. {
  506. foreach (Note note in notefound)
  507. {
  508. ResponseRecordModel item = new ResponseRecordModel();
  509. item.record.tableName = "Note";
  510. item.record.serverId = note.id.ToString();
  511. item.parent.tableName = "Activity";
  512. item.parent.serverId = note.Activity.id.ToString();
  513. if (note.date != null)
  514. {
  515. tempDate = (DateTime)note.date;
  516. item.record.recordData.Add("date", tempDate.Date.ToString("s"));
  517. }
  518. if (note.note1 != null)
  519. {
  520. item.record.recordData.Add("note", note.note1);
  521. }
  522. item.record.recordData.Add("photo", note.photo);
  523. item.record.recordData.Add("teacherEmailID", note.teacherEmailID);
  524. item.record.recordData.Add("parentId", note.activityId.ToString());
  525. item.record.recordData.Add("delete", note.deleted.ToString());
  526. response.response.record.Add(item);
  527. }
  528. latestTime = (DateTime)(from d in db.Notes select d.modified).Max();
  529. int i = DateTime.Compare(latestTime, tableTime);
  530. if (i < 0) //latesttime is less than tabletime
  531. latestTime = tableTime;
  532. }
  533. #endregion
  534. #region CHECKLIST
  535. var checklistfound = db.Checklists.Where(b => b.modified > requestTime);
  536. if (checklistfound.Count() > 0)
  537. {
  538. foreach (Checklist checklist in checklistfound)
  539. {
  540. ResponseRecordModel item = new ResponseRecordModel();
  541. item.record.tableName = "CheckList";
  542. item.parent.tableName = "Activity";
  543. item.parent.serverId = checklist.Activity.id.ToString();
  544. item.record.serverId = checklist.id.ToString();
  545. item.record.recordData.Add("name", checklist.name);
  546. item.record.recordData.Add("checklistType", checklist.checklistType);
  547. item.record.recordData.Add("draftActivityURI", checklist.draftActivityURI);
  548. item.record.recordData.Add("checklistValues", checklist.checklistValues);
  549. item.record.recordData.Add("parentId", checklist.activityId.ToString());
  550. item.record.recordData.Add("delete", checklist.deleted.ToString());
  551. response.response.record.Add(item);
  552. }
  553. latestTime = (DateTime)(from d in db.Checklists select d.modified).Max();
  554. int i = DateTime.Compare(latestTime, tableTime);
  555. if (i < 0) //latesttime is less than tabletime
  556. latestTime = tableTime;
  557. }
  558. #endregion
  559. #region TRANSPORT
  560. var transportfound = db.Transports.Where(b => b.modified > requestTime);
  561. if (transportfound.Count() > 0)
  562. {
  563. foreach (Transport transport in transportfound)
  564. {
  565. ResponseRecordModel item = new ResponseRecordModel();
  566. item.record.tableName = "Transport";
  567. item.parent.tableName = "Activity";
  568. item.parent.serverId = transport.Activity.id.ToString();
  569. item.record.serverId = transport.id.ToString();
  570. item.record.recordData.Add("type", transport.type);
  571. item.record.recordData.Add("pickLocation", transport.pickLocation);
  572. item.record.recordData.Add("dropOffLocation", transport.dropOffLocation);
  573. item.record.recordData.Add("parentId", transport.activityId.ToString());
  574. if (transport.dropOffDate != null)
  575. {
  576. tempDate = (DateTime)transport.dropOffDate;
  577. item.record.recordData.Add("dropOffDate", tempDate.ToString("s"));
  578. }
  579. item.record.recordData.Add("delete", transport.deleted.ToString());
  580. response.response.record.Add(item);
  581. }
  582. latestTime = (DateTime)(from d in db.Transports select d.modified).Max();
  583. int i = DateTime.Compare(latestTime, tableTime);
  584. if (i < 0) //latesttime is less than tabletime
  585. latestTime = tableTime;
  586. }
  587. #endregion
  588. #region EmergencyContact
  589. var EmergencyContactFound = db.EmergencyContacts.Where(b => b.modified > requestTime);
  590. if (EmergencyContactFound.Count() > 0)
  591. {
  592. foreach (EmergencyContact emergencyContacts in EmergencyContactFound)
  593. {
  594. ResponseRecordModel item = new ResponseRecordModel();
  595. item.record.tableName = "EmergencyContact";
  596. item.parent.tableName = "Activity";
  597. item.parent.serverId = emergencyContacts.Activity.id.ToString();
  598. item.record.serverId = emergencyContacts.id.ToString();
  599. item.record.recordData.Add("name", emergencyContacts.name);
  600. item.record.recordData.Add("phone", emergencyContacts.phone);
  601. item.record.recordData.Add("parentId", emergencyContacts.activityId.ToString());
  602. item.record.recordData.Add("delete", emergencyContacts.deleted.ToString());
  603. response.response.record.Add(item);
  604. }
  605. latestTime = (DateTime)(from d in db.EmergencyContacts select d.modified).Max();
  606. int i = DateTime.Compare(latestTime, tableTime);
  607. if (i < 0) //latesttime is less than tabletime
  608. latestTime = tableTime;
  609. }
  610. #endregion
  611. response.response.updateTime = latestTime.ToString("s");
  612. response.status.error = 0;
  613. response.status.errorMsg = "";
  614. var serializer = new JavaScriptSerializer();
  615. serializer.MaxJsonLength = Int32.MaxValue;
  616. var result = new ContentResult
  617. {
  618. Content = serializer.Serialize(response),
  619. ContentType = "application/json"
  620. };
  621. return result;
  622. }
  623. private SyncRecordResponseModel UpdateRecord(SyncObjectRequestModel requestItem)
  624. {
  625. SyncRecordResponseModel response = new SyncRecordResponseModel();
  626. switch (requestItem.record.tableName.ToUpper())
  627. {
  628. case "SCHOOL":
  629. response.response.record.serverId = UpdateSchool(requestItem);
  630. break;
  631. case "TEACHER":
  632. response.response.record.serverId = UpdateTeacher(requestItem);
  633. break;
  634. case "LOCATION":
  635. response.response.record.serverId = UpdateLocation(requestItem);
  636. break;
  637. case "LOCATIONTEMPLATE":
  638. response.response.record.serverId = UpdateLocationTemplate(requestItem);
  639. break;
  640. case "ACCREDITATION":
  641. response.response.record.serverId = UpdateAccreditation(requestItem);
  642. break;
  643. case "ACTIVITY":
  644. response.response.record.serverId = UpdateActivity(requestItem);
  645. break;
  646. case "TEACHERSUPPORT":
  647. response.response.record.serverId = UpdateTeacherSupport(requestItem);
  648. break;
  649. case "COMMENT":
  650. response.response.record.serverId = UpdateComment(requestItem);
  651. break;
  652. case "ALERT":
  653. response.response.record.serverId = UpdateAlert(requestItem);
  654. break;
  655. case "GENERALWEATHER":
  656. response.response.record.serverId = UpdateGeneralWeather(requestItem);
  657. break;
  658. case "FORECAST":
  659. response.response.record.serverId = UpdateForecast(requestItem);
  660. break;
  661. case "CHECKLIST":
  662. response.response.record.serverId = UpdateCheckList(requestItem);
  663. break;
  664. case "PHOTO":
  665. response.response.record.serverId = UpdatePhoto(requestItem);
  666. break;
  667. case "TRANSPORT":
  668. response.response.record.serverId = UpdateTransport(requestItem);
  669. break;
  670. case "EMERGENCYCONTACT":
  671. response.response.record.serverId = UpdateEmergencyContact(requestItem);
  672. break;
  673. case "NOTE":
  674. response.response.record.serverId = UpdateNote(requestItem);
  675. break;
  676. default:
  677. response.status.error = 1;
  678. response.status.errorMsg = "Table is not valid";
  679. break;
  680. }
  681. return response;
  682. }
  683. private SyncRecordResponseModel DeleteRecord(SyncObjectRequestModel requestItem)
  684. {
  685. SyncRecordResponseModel response = new SyncRecordResponseModel();
  686. switch (requestItem.record.tableName.ToUpper())
  687. {
  688. case "SCHOOL":
  689. response.response.record.serverId = DeleteSchool(requestItem);
  690. break;
  691. case "TEACHER":
  692. response.response.record.serverId = DeleteTeacher(requestItem);
  693. break;
  694. case "LOCATION":
  695. response.response.record.serverId = DeleteLocation(requestItem);
  696. break;
  697. case "LOCATIONTEMPLATE":
  698. response.response.record.serverId = DeleteLocationTemplate(requestItem);
  699. break;
  700. case "ACCREDITATION":
  701. response.response.record.serverId = DeleteAccreditation(requestItem);
  702. break;
  703. case "ACTIVITY":
  704. response.response.record.serverId = DeleteActivity(requestItem);
  705. break;
  706. case "TEACHERSUPPORT":
  707. response.response.record.serverId = DeleteTeacherSupport(requestItem);
  708. break;
  709. case "COMMENT":
  710. response.response.record.serverId = DeleteComment(requestItem);
  711. break;
  712. case "ALERT":
  713. response.response.record.serverId = DeleteAlert(requestItem);
  714. break;
  715. case "GENERALWEATHER":
  716. response.response.record.serverId = DeleteGeneralWeather(requestItem);
  717. break;
  718. case "FORECAST":
  719. response.response.record.serverId = DeleteForecast(requestItem);
  720. break;
  721. case "CHECKLIST":
  722. response.response.record.serverId = DeleteCheckList(requestItem);
  723. break;
  724. case "PHOTO":
  725. response.response.record.serverId = DeletePhoto(requestItem);
  726. break;
  727. case "TRANSPORT":
  728. response.response.record.serverId = DeleteTransport(requestItem);
  729. break;
  730. case "EMERGENCYCONTACT":
  731. response.response.record.serverId = DeleteEmergencyContact(requestItem);
  732. break;
  733. case "NOTE":
  734. response.response.record.serverId = DeleteNote(requestItem);
  735. break;
  736. default:
  737. response.status.error = 1;
  738. response.status.errorMsg = "Table is not valid";
  739. break;
  740. }
  741. return response;
  742. }
  743. private SyncRecordResponseModel AddRecord(SyncObjectRequestModel requestItem)
  744. {
  745. SyncRecordResponseModel response = new SyncRecordResponseModel();
  746. if (requestItem.record.coreDataId.Length == 0)
  747. {
  748. response.status.error = 1;
  749. response.status.errorMsg = "coreDataId value is not set";
  750. return response;
  751. }
  752. response.response.record.tableName = requestItem.record.tableName;
  753. response.response.record.coreDataId = requestItem.record.coreDataId;
  754. switch (requestItem.record.tableName.ToUpper())
  755. {
  756. case "SCHOOL":
  757. response.response.record.serverId = AddSchool(requestItem);
  758. break;
  759. case "TEACHER":
  760. response.response.record.serverId = AddTeacher(requestItem);
  761. break;
  762. case "LOCATION":
  763. response.response.record.serverId = AddLocation(requestItem);
  764. break;
  765. case "LOCATIONTEMPLATE":
  766. response.response.record.serverId = AddLocationTemplate(requestItem);
  767. break;
  768. case "ACCREDITATION":
  769. response.response.record.serverId = AddAccreditation(requestItem);
  770. break;
  771. case "ACTIVITY":
  772. response.response.record.serverId = AddActivity(requestItem);
  773. break;
  774. case "TEACHERSUPPORT":
  775. response.response.record.serverId = AddTeacherSupport(requestItem);
  776. break;
  777. case "COMMENT":
  778. response.response.record.serverId = AddComment(requestItem);
  779. break;
  780. case "ALERT":
  781. response.response.record.serverId = AddAlert(requestItem);
  782. break;
  783. case "GENERALWEATHER":
  784. response.response.record.serverId = AddGeneralWeather(requestItem);
  785. break;
  786. case "FORECAST":
  787. response.response.record.serverId = AddForecast(requestItem);
  788. break;
  789. case "CHECKLIST":
  790. response.response.record.serverId = AddCheckList(requestItem);
  791. break;
  792. case "PHOTO":
  793. response.response.record.serverId = AddPhoto(requestItem);
  794. break;
  795. case "TRANSPORT":
  796. response.response.record.serverId = AddTransport(requestItem);
  797. break;
  798. case "EMERGENCYCONTACT":
  799. response.response.record.serverId = AddEmergencyContact(requestItem);
  800. break;
  801. case "NOTE":
  802. response.response.record.serverId = AddNote(requestItem);
  803. break;
  804. default:
  805. response.status.error = 1;
  806. response.status.errorMsg = "Table is not valid";
  807. break;
  808. }
  809. return response;
  810. }
  811. #endregion
  812. #region LocationTemplate
  813. //****************LocationTemplate ADD UPDATE and DELETE
  814. private string AddLocationTemplate(SyncObjectRequestModel requestItem)
  815. {
  816. LocationTemplate locationTemplate = db.LocationTemplates.SingleOrDefault(i => i.coreDataId == requestItem.record.coreDataId);
  817. if (locationTemplate == null)
  818. {
  819. locationTemplate = new LocationTemplate();
  820. db.LocationTemplates.Add(locationTemplate);
  821. locationTemplate.coreDataId = requestItem.record.coreDataId;
  822. }
  823. if (requestItem.record.recordData.ContainsKey("address"))
  824. {
  825. string value = requestItem.record.recordData["address"];
  826. locationTemplate.address = value;
  827. }
  828. if (requestItem.record.recordData.ContainsKey("altitude"))
  829. {
  830. string value = requestItem.record.recordData["altitude"];
  831. locationTemplate.altitude = value;
  832. }
  833. if (requestItem.record.recordData.ContainsKey("facilities"))
  834. {
  835. string value = requestItem.record.recordData["facilities"];
  836. locationTemplate.facilities = value;
  837. }
  838. if (requestItem.record.recordData.ContainsKey("latitude"))
  839. {
  840. string value = requestItem.record.recordData["latitude"];
  841. locationTemplate.latitude = value;
  842. }
  843. if (requestItem.record.recordData.ContainsKey("locationType"))
  844. {
  845. string value = requestItem.record.recordData["locationType"];
  846. locationTemplate.locationType = value;
  847. }
  848. if (requestItem.record.recordData.ContainsKey("longitude"))
  849. {
  850. string value = requestItem.record.recordData["longitude"];
  851. locationTemplate.longitude = value;
  852. }
  853. if (requestItem.record.recordData.ContainsKey("name"))
  854. {
  855. string value = requestItem.record.recordData["name"];
  856. locationTemplate.name = value;
  857. }
  858. if (requestItem.record.recordData.ContainsKey("notes"))
  859. {
  860. string value = requestItem.record.recordData["notes"];
  861. locationTemplate.notes = value;
  862. }
  863. if (requestItem.record.recordData.ContainsKey("riskType"))
  864. {
  865. string value = requestItem.record.recordData["riskType"];
  866. locationTemplate.riskType = value;
  867. }
  868. if (requestItem.record.recordData.ContainsKey("hazardRating"))
  869. {
  870. string value = requestItem.record.recordData["hazardRating"];
  871. locationTemplate.riskType = value;
  872. }
  873. locationTemplate.deleted = false;
  874. locationTemplate.modified = DateTime.Now;
  875. db.SaveChanges();
  876. return locationTemplate.id.ToString(); ;
  877. }
  878. private string UpdateLocationTemplate(SyncObjectRequestModel requestItem)
  879. {
  880. int serverId;
  881. bool result = Int32.TryParse(requestItem.record.serverId, out serverId);
  882. if (!result)
  883. {
  884. return "-1";
  885. }
  886. LocationTemplate locationTemplate = db.LocationTemplates.SingleOrDefault(i => i.id == serverId);
  887. if (locationTemplate != null)
  888. {
  889. // See whether Dictionary contains this string.
  890. if (requestItem.record.recordData.ContainsKey("address"))
  891. {
  892. string value = requestItem.record.recordData["address"];
  893. locationTemplate.address = value;
  894. }
  895. if (requestItem.record.recordData.ContainsKey("altitude"))
  896. {
  897. string value = requestItem.record.recordData["altitude"];
  898. locationTemplate.altitude = value;
  899. }
  900. if (requestItem.record.recordData.ContainsKey("facilities"))
  901. {
  902. string value = requestItem.record.recordData["facilities"];
  903. locationTemplate.facilities = value;
  904. }
  905. if (requestItem.record.recordData.ContainsKey("latitude"))
  906. {
  907. string value = requestItem.record.recordData["latitude"];
  908. locationTemplate.latitude = value;
  909. }
  910. if (requestItem.record.recordData.ContainsKey("locationType"))
  911. {
  912. string value = requestItem.record.recordData["locationType"];
  913. locationTemplate.locationType = value;
  914. }
  915. if (requestItem.record.recordData.ContainsKey("longitude"))
  916. {
  917. string value = requestItem.record.recordData["longitude"];
  918. locationTemplate.longitude = value;
  919. }
  920. if (requestItem.record.recordData.ContainsKey("name"))
  921. {
  922. string value = requestItem.record.recordData["name"];
  923. locationTemplate.name = value;
  924. }
  925. if (requestItem.record.recordData.ContainsKey("notes"))
  926. {
  927. string value = requestItem.record.recordData["notes"];
  928. locationTemplate.notes = value;
  929. }
  930. if (requestItem.record.recordData.ContainsKey("riskType"))
  931. {
  932. string value = requestItem.record.recordData["riskType"];
  933. locationTemplate.riskType = value;
  934. }
  935. if (requestItem.record.recordData.ContainsKey("hazardRating"))
  936. {
  937. string value = requestItem.record.recordData["hazardRating"];
  938. locationTemplate.riskType = value;
  939. }
  940. locationTemplate.modified = DateTime.Now;
  941. db.SaveChanges();
  942. return locationTemplate.id.ToString(); ;
  943. }
  944. else
  945. {
  946. return "-1";
  947. }
  948. }
  949. private string DeleteLocationTemplate(SyncObjectRequestModel requestItem)
  950. {
  951. int serverId;
  952. bool result = Int32.TryParse(requestItem.record.serverId, out serverId);
  953. if (!result)
  954. {
  955. return "-1";
  956. }
  957. LocationTemplate locationTemplate = db.LocationTemplates.SingleOrDefault(i => i.id == serverId);
  958. if (locationTemplate != null)
  959. {
  960. locationTemplate.deleted = true;
  961. locationTemplate.modified = DateTime.Now;
  962. db.SaveChanges();
  963. return locationTemplate.id.ToString(); ;
  964. }
  965. else
  966. {
  967. return "-1";
  968. }
  969. }
  970. //*****************END Location ADD UPDATE and DELETE
  971. #endregion
  972. #region School
  973. //****************School ADD UPDATE and DELETE
  974. private string AddSchool(SyncObjectRequestModel requestItem)
  975. {
  976. School school = db.Schools.SingleOrDefault(i => i.coreDataId == requestItem.record.coreDataId);
  977. if (school == null)
  978. {
  979. school = new School();
  980. db.Schools.Add(school);
  981. school.coreDataId = requestItem.record.coreDataId;
  982. }
  983. // See whether Dictionary contains this string.
  984. if (requestItem.record.recordData.Conta

Large files files are truncated, but you can click here to view the full file