public CMSResult SendAppNotification(OfflineTestPaperViewModel viewModel, List <ListOfPlayerId> listOfPlayerId, List <ListOfPlayerId> listOfStudentId, int offlineTestPaperId) { var cmsResult = new CMSResult(); var notificationList = new List <SendNotificationByPlayerId>(); foreach (var playerId in listOfPlayerId) { var studentSId = playerId.SId; var sendAppNotification = new SendNotificationByPlayerId { Message = "OfflineTest-<br />" + viewModel.Title + " offline test paper on " + viewModel.TestDate.ToString("dd-MM-yyyy") + ", Total Marks - " + viewModel.TotalMarks + "$^$" + playerId.SId + "@" + offlineTestPaperId, PlayerIds = playerId.ParentPlayerId, AppIds = ConfigurationManager.AppSettings[Common.Constants.ParentAppId], RestApiKey = ConfigurationManager.AppSettings[Common.Constants.ParentRestAppId] }; notificationList.Add(sendAppNotification); } foreach (var playerId in listOfStudentId) { var studentSId = playerId.SId; var sendAppNotification = new SendNotificationByPlayerId { Message = "OfflineTest-<br />" + viewModel.Title + " offline test paper on " + viewModel.TestDate.ToString("dd-MM-yyyy") + ", Total Marks - " + viewModel.TotalMarks + "$^$" + playerId.SId + "@" + offlineTestPaperId, PlayerIds = playerId.ParentPlayerId, AppIds = ConfigurationManager.AppSettings[Common.Constants.StudentAppId], RestApiKey = ConfigurationManager.AppSettings[Common.Constants.StudentRestAppId] }; notificationList.Add(sendAppNotification); } var notification = notificationList.ToArray(); if (notificationList.Count > 0) { HostingEnvironment.QueueBackgroundWorkItem(cancellationToken => _sendNotificationService.StartProcessingByPlayerId(notification, cancellationToken)); cmsResult.Results.Add(new Result { Message = "App Notification sent successfully.", IsSuccessful = true }); } else { cmsResult.Results.Add(new Result { Message = "No one is registered in parent app.", IsSuccessful = true }); } return(cmsResult); }
public ActionResult Delete(OfflineTestPaperViewModel viewModel) { if (ModelState.IsValid) { var result = _offlineTestPaper.Delete(viewModel.OfflineTestPaperId); if (result.Success) { Success(result.Results.FirstOrDefault().Message); ModelState.Clear(); } else { _logger.Warn(result.Results.FirstOrDefault().Message); Warning(result.Results.FirstOrDefault().Message, true); } } return(RedirectToAction("Index")); }
public ActionResult Edit(OfflineTestPaperViewModel viewModel) { var cmsResult = new CMSResult(); List <string> listOfEmail = new List <string>(); List <string> listOfName = new List <string>(); List <string> listOfNumber = new List <string>(); var finalParentPlayerId = new List <ListOfPlayerId>(); var finalStudentPlayerId = new List <ListOfPlayerId>(); if (viewModel.SMS) { viewModel.Media += ", SMS"; } if (viewModel.AppNotification) { viewModel.Media += ", AppNotification"; } if (ModelState.IsValid) { var offlineTests = _repository.Project <OfflineTestPaper, bool>(offlineTest => (from offline in offlineTest where offline.OfflineTestPaperId == viewModel.OfflineTestPaperId select offline).Any()); if (!offlineTests) { _logger.Warn(string.Format("Exam Schedule not exists '{0}'.", viewModel.Title)); Danger(string.Format("Exam Schedule not exists '{0}'.", viewModel.Title)); } TimeSpan span = (Convert.ToDateTime(viewModel.TestOutTime) - Convert.ToDateTime(viewModel.TestInTime)); if (viewModel.TestInTime != null && viewModel.TestOutTime != null && Convert.ToDateTime(viewModel.TestInTime).ToShortTimeString() != "12:00 AM" && Convert.ToDateTime(viewModel.TestOutTime).ToShortTimeString() != "12:00 AM" && viewModel.TestOutTime != null && !(span >= TimeSpan.FromMinutes(30) && span <= TimeSpan.FromHours(3))) { cmsResult.Results.Add(new Result { Message = "The time limit should be min lengh of (1/2 hr) & max length of (3 hrs).", IsSuccessful = false }); } else { string subject = "Exam Schedule Update"; var studentList = _studentService.GetStudentByBranchClassBatchForTestPaper(viewModel.SelectedBranches, viewModel.ClassId.ToString(), viewModel.SelectedBatches); var batchIds = viewModel.SelectedBatches.Split(',').Where(x => !string.IsNullOrEmpty(x)).Select(int.Parse).ToList(); var batch = _repository.LoadList <Batch>(x => batchIds.Contains(x.BatchId)); foreach (var student in studentList) { if (batchIds.Contains(student.BatchId)) { if (viewModel.AppNotification) { if (student.parentAppPlayerId != "" && student.parentAppPlayerId != null) { finalParentPlayerId.Add(new ListOfPlayerId { SId = student.SId, ParentPlayerId = student.parentAppPlayerId }); } if (student.studentAppPlayerId != "" && student.studentAppPlayerId != null) { finalStudentPlayerId.Add(new ListOfPlayerId { SId = student.SId, ParentPlayerId = student.studentAppPlayerId }); } } listOfEmail.Add(student.Email); listOfName.Add(student.Name); listOfNumber.Add(student.StudentContact); } } int resultCount = cmsResult.Results.Where(x => x.IsSuccessful == true).Count(); if (resultCount > 0) { var result = _offlineTestPaper.Update(new OfflineTestPaper { OfflineTestPaperId = viewModel.OfflineTestPaperId, TotalMarks = viewModel.TotalMarks, TestDate = viewModel.TestDate, TestInTime = viewModel.TestInTime == null ? DateTime.Now.Date : Convert.ToDateTime(viewModel.TestInTime.Trim()), TestOutTime = viewModel.TestOutTime == null ? DateTime.Now.Date : Convert.ToDateTime(viewModel.TestOutTime.Trim()), Title = viewModel.Title, Media = viewModel.Media }); if (result.Success) { var roleUserId = User.Identity.GetUserId(); var roles = _aspNetRolesService.GetCurrentUserRole(roleUserId); if (roles == "BranchAdmin") { var resultEmail = sendMailfromBranchAdmin(viewModel.Title, viewModel.Media); } cmsResult = SendNotificationToStudent(viewModel, subject, viewModel.OfflineTestPaperId, listOfEmail, listOfName, listOfNumber, finalParentPlayerId, finalStudentPlayerId); var errorMessage = ""; foreach (var messageFailure in cmsResult.Results) { errorMessage += messageFailure.Message + "<br/>"; } Success(result.Results.FirstOrDefault().Message + "<br />" + errorMessage); ModelState.Clear(); return(RedirectToAction("Index")); } else { _logger.Warn(result.Results.FirstOrDefault().Message); Warning(result.Results.FirstOrDefault().Message, true); } } } } return(View(viewModel)); }
public JsonResult SendOffineTestPaperNotification(OfflineTestPaperViewModel viewModel) { var cmsResult = new CMSResult(); List <string> listOfEmail = new List <string>(); List <string> listOfName = new List <string>(); List <string> listOfNumber = new List <string>(); var finalParentPlayerId = new List <ListOfPlayerId>(); var finalStudentPlayerId = new List <ListOfPlayerId>(); if (ModelState.IsValid) { TimeSpan span = (Convert.ToDateTime(viewModel.TestOutTime) - Convert.ToDateTime(viewModel.TestInTime)); if (viewModel.TestInTime != null && viewModel.TestOutTime != null && Convert.ToDateTime(viewModel.TestInTime).ToShortTimeString() != "12:00 AM" && Convert.ToDateTime(viewModel.TestOutTime).ToShortTimeString() != "12:00 AM" && viewModel.TestOutTime != null && !(span >= TimeSpan.FromMinutes(30) && span <= TimeSpan.FromHours(3))) { cmsResult.Results.Add(new Result { Message = "The time limit should be min lengh of (1/2 hr) & max length of (3 hrs).", IsSuccessful = false }); } else { string subject = "Exam Schedule Create"; try { var studentList = _studentService.GetStudentByBranchClassBatchForTestPaper(viewModel.SelectedBranches, viewModel.ClassId.ToString(), viewModel.SelectedBatches); var batchIds = viewModel.SelectedBatches.Split(',').Where(x => !string.IsNullOrEmpty(x)).Select(int.Parse).ToList(); var batch = _repository.LoadList <Batch>(x => batchIds.Contains(x.BatchId)); foreach (var student in studentList) { if (batchIds.Contains(student.BatchId)) { if (viewModel.AppNotification) { if (student.parentAppPlayerId != "" && student.parentAppPlayerId != null) { finalParentPlayerId.Add(new ListOfPlayerId { SId = student.SId, ParentPlayerId = student.parentAppPlayerId }); } if (student.studentAppPlayerId != "" && student.studentAppPlayerId != null) { finalStudentPlayerId.Add(new ListOfPlayerId { SId = student.SId, ParentPlayerId = student.studentAppPlayerId }); } } listOfEmail.Add(student.Email); listOfName.Add(student.Name); listOfNumber.Add(student.StudentContact); } } if (listOfNumber.Count > 0) { var offlineTestPaper = new OfflineTestPaper { OfflineTestPaperId = viewModel.OfflineTestPaperId, Title = viewModel.Title, TestDate = viewModel.TestDate, TestInTime = viewModel.TestInTime == null ? DateTime.Now.Date : Convert.ToDateTime(viewModel.TestInTime.Trim()), TestOutTime = viewModel.TestOutTime == null ? DateTime.Now.Date : Convert.ToDateTime(viewModel.TestOutTime.Trim()), TotalMarks = viewModel.TotalMarks, SelectedBranches = viewModel.SelectedBranches, SelectedBatches = viewModel.SelectedBatches, ClassId = viewModel.ClassId, SubjectId = viewModel.SubjectId, Media = viewModel.Media }; var result = _offlineTestPaper.Save(offlineTestPaper); if (result.Success) { var offlineTestPaperId = offlineTestPaper.OfflineTestPaperId; var roleUserId = User.Identity.GetUserId(); var roles = _aspNetRolesService.GetCurrentUserRole(roleUserId); if (roles == "BranchAdmin") { var resultEmail = sendMailfromBranchAdmin(viewModel.Title, viewModel.Media); } cmsResult = SendNotificationToStudent(viewModel, subject, offlineTestPaperId, listOfEmail, listOfName, listOfNumber, finalParentPlayerId, finalStudentPlayerId); cmsResult.Results.Add(new Result { Message = result.Results[0].Message, IsSuccessful = true }); } else { cmsResult.Results.Add(new Result { Message = result.Results[0].Message, IsSuccessful = false }); } } else { cmsResult.Results.Add(new Result { Message = "No student available please select another batch.", IsSuccessful = false }); } } catch (Exception ex) { _logger.Error(ex.Message + "catch SendOffineTestPaperNotification"); throw; } } } else { var errors = ModelState.Values.SelectMany(x => x.Errors).ToArray(); foreach (var item in errors) { cmsResult.Results.Add(new Result { Message = item.ErrorMessage, IsSuccessful = false }); } } return(Json(cmsResult, JsonRequestBehavior.AllowGet)); }
public CMSResult SendNotificationToStudent(OfflineTestPaperViewModel viewModel, string subject, int offlineTestPaperId, List <string> listOfEmail, List <string> listOfName, List <string> listOfNumber, List <ListOfPlayerId> finalParentPlayerId, List <ListOfPlayerId> finalStudentPlayerId) { var cmsResult = new CMSResult(); if (listOfEmail.Count > 0) { var result = SendEmail(listOfEmail.Distinct().ToList(), listOfName.Distinct().ToList(), viewModel.Title, viewModel.ClassName, viewModel.SubjectName, viewModel.SelectedBatchesName, viewModel.TestDate, viewModel.TotalMarks, subject); if (result == true) { cmsResult.Results.Add(new Result { Message = "Email sent successfully.", IsSuccessful = true }); } else { cmsResult.Results.Add(new Result { Message = "Something went wrong to send email.", IsSuccessful = false }); } } if (viewModel.SMS) { if (listOfNumber.Count > 0) { var result = SendSMS(viewModel.Title, listOfNumber.Distinct().ToList()); if (result.Success) { cmsResult.Results.Add(new Result { Message = result.Results[0].Message, IsSuccessful = true }); } else { cmsResult.Results.Add(new Result { Message = result.Results[0].Message, IsSuccessful = false }); } } } if (viewModel.AppNotification) { var response = SendAppNotification(viewModel, finalParentPlayerId, finalStudentPlayerId, offlineTestPaperId); if (response.Success) { cmsResult.Results.Add(new Result { Message = response.Results[0].Message, IsSuccessful = true }); } else { cmsResult.Results.Add(new Result { Message = response.Results[0].Message, IsSuccessful = false }); } } return(cmsResult); }