public CMSResult SendAppNotification(UploadOfflineMarksViewModel viewModel, List <StudentProjection> studentList, List <UploadOfflineTestMarks> uploadOfflineTestMarks) { var cmsResult = new CMSResult(); var notificationList = new List <SendNotificationByPlayerId>(); foreach (var playerId in uploadOfflineTestMarks) { var student = studentList.Where(x => x.Email == playerId.EmailId).FirstOrDefault(); var message = "Absent for offline test paper." + "$^$" + student.SId + "@0"; if (playerId.IsPresent) { message = "<br />Name - " + student.Name + "<br />Title - " + viewModel.Title + "<br />Marks - " + playerId.ObtainedMarks + "/" + viewModel.TotalMarks + "<br />Percentage - " + playerId.Percentage + "$^$" + student.SId + "@0"; } if (student.parentAppPlayerId != null && student.parentAppPlayerId != "") { var sendParentAppNotification = new SendNotificationByPlayerId { Message = "Marks-" + message, PlayerIds = student.parentAppPlayerId, AppIds = ConfigurationManager.AppSettings[Common.Constants.ParentAppId], RestApiKey = ConfigurationManager.AppSettings[Common.Constants.ParentRestAppId] }; notificationList.Add(sendParentAppNotification); } if (student.studentAppPlayerId != null && student.studentAppPlayerId != "") { var sendStudentAppNotification = new SendNotificationByPlayerId { Message = "Marks-" + message, PlayerIds = student.studentAppPlayerId, AppIds = ConfigurationManager.AppSettings[Common.Constants.StudentAppId], RestApiKey = ConfigurationManager.AppSettings[Common.Constants.StudentRestAppId] }; notificationList.Add(sendStudentAppNotification); } } 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 CMSResult SendSMS(UploadOfflineMarksViewModel viewModel, List <StudentProjection> studentList, List <UploadOfflineTestMarks> uploadOfflineTestMarks) { var cmsResult = new CMSResult(); var smsList = new List <SmsModel>(); foreach (var sms in uploadOfflineTestMarks) { var studentName = studentList.Where(x => x.Email == sms.EmailId).FirstOrDefault(); var message = "Absent for Offline Test Paper."; if (sms.IsPresent) { message = "Name - " + studentName.Name + "<br />Title - " + viewModel.Title + "<br />Marks - " + sms.ObtainedMarks + "/" + viewModel.TotalMarks + "<br />Percentage - " + sms.Percentage; } var sendSMSToParent = new SmsModel { Message = message, SendTo = studentName.ParentContact }; var sendSMSToStudent = new SmsModel { Message = message, SendTo = studentName.StudentContact }; smsList.Add(sendSMSToParent); smsList.Add(sendSMSToStudent); } var smsModelLists = smsList.ToArray(); if (smsList.Count > 0) { HostingEnvironment.QueueBackgroundWorkItem(cancellationToken => _smsService.StartProcessing(smsModelLists, cancellationToken)); cmsResult.Results.Add(new Result { Message = "SMS sent Successfully.", IsSuccessful = true }); } return(cmsResult); }
public ActionResult DeleteUploadMarks(UploadOfflineMarksViewModel viewModel) { var uploadMarksdata = JsonConvert.DeserializeObject <List <UploadOfflineMarksProjection> >(viewModel.StudentOfflineMarks).ToList(); var cmsResult = new CMSResult(); if (ModelState.IsValid) { foreach (var uploadMark in uploadMarksdata) { cmsResult = _offlineTestStudentMarksService.Delete(uploadMark.OfflineTestStudentMarksId); if (cmsResult.Success) { cmsResult.Results.Add(new Result { Message = cmsResult.Results.FirstOrDefault().ToString(), IsSuccessful = true }); ModelState.Clear(); } else { cmsResult.Results.Add(new Result { Message = cmsResult.Results.FirstOrDefault().ToString(), IsSuccessful = false }); } } } 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 ActionResult UpdateUploadMarks(UploadOfflineMarksViewModel viewModel) { var uploadMarksdata = JsonConvert.DeserializeObject <List <UploadOfflineMarksProjection> >(viewModel.StudentOfflineMarks).ToList(); var cmsResult = new CMSResult(); var offlineTest = _offlineTestPaper.GetOfflineTestById(viewModel.OfflineTestPaperId); if (ModelState.IsValid) { var offlineTestStudentMarksList = new List <OfflineTestStudentMarks>(); foreach (var uploadMark in uploadMarksdata) { var offlineTestStudentMarks = new OfflineTestStudentMarks { UserId = uploadMark.UserId, OfflineTestPaperId = viewModel.OfflineTestPaperId, ObtainedMarks = uploadMark.ObtainedMarks, Percentage = uploadMark.Percentage, OfflineTestStudentMarksId = uploadMark.OfflineTestStudentMarksId, IsPresent = uploadMark.IsPresent }; offlineTestStudentMarksList.Add(offlineTestStudentMarks); #region rough //cmsResult = _offlineTestStudentMarksService.Update(offlineTestStudentMarks); //if (cmsResult.Success) //{ // string subject = "Student Update Offline Test Marks"; // viewModel.StudentEmail = uploadMark.EmailId; // viewModel.StudentContact = uploadMark.StudentContact; // viewModel.ObtainedMarks = uploadMark.ObtainedMarks; // viewModel.Percentage = uploadMark.Percentage; // viewModel.ClassName = offlineTest.ClassName; // viewModel.SubjectName = offlineTest.SubjectName; // var BatchList = _batchService.GetBatchesByBatchIds(offlineTest.SelectedBatches).Select(x => x.BatchName).ToList(); // viewModel.SelectedBatchesName = string.Join(",", BatchList); // cmsResult = SendNotification(viewModel, subject); //} //else //{ // cmsResult.Results.Add(new Result { Message = cmsResult.Results.FirstOrDefault().ToString(), IsSuccessful = false }); //} #endregion } var offlineTestStudentMarksArray = offlineTestStudentMarksList.ToArray(); if (offlineTestStudentMarksList.Count > 0) { HostingEnvironment.QueueBackgroundWorkItem(cancellationToken => StartProcessingUpdateOfflineTestMarks(offlineTestStudentMarksArray, cancellationToken)); cmsResult.Results.Add(new Result { Message = "Offline test paper marks updated successfully.", IsSuccessful = true }); string subject = "Update Student Test Marks"; var result = SendNotification(viewModel, subject); } #region Rough //if (cmsResult.Success) //{ // var messages = ""; // foreach (var message in cmsResult.Results) // { // messages += message.Message + "<br />"; // } // Success(messages); // ModelState.Clear(); // //viewModel = new UploadOfflineMarksViewModel(); //} //else //{ // cmsResult.Results.Add(new Result { Message = cmsResult.Results.FirstOrDefault().ToString(), IsSuccessful = false }); //} #endregion } 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 bool SendEmail(UploadOfflineMarksViewModel viewModel, string subject, List <UploadOfflineTestMarks> uploadOfflineMarks, List <StudentProjection> studentList) { string userRole = ""; var emailModels = new List <MailModel>(); var roleUserId = User.Identity.GetUserId(); bool isBranchAdmin = false; var roles = _aspNetRolesService.GetCurrentUserRole(roleUserId); if (roles == "BranchAdmin") { var branchAdmin = _branchAdminService.GetBranchAdminById(roleUserId); userRole = branchAdmin.BranchName; isBranchAdmin = true; } else { userRole = User.Identity.GetUserName() + "(" + "Master Admin" + ")"; } string body = string.Empty; using (StreamReader reader = new StreamReader(Server.MapPath("~/MailDesign/NotificationMailDesign.html"))) { body = reader.ReadToEnd(); } if (isBranchAdmin) { var emailFormat = body; emailFormat = emailFormat.Replace("{BranchName}", userRole); emailFormat = emailFormat.Replace("{NotificationMessage}", "<br/> Title : " + viewModel.Title + "<br/>Class Name : " + viewModel.ClassName + "<br/>Subject Name : " + viewModel.SubjectName + "<br/>Batch Name : " + viewModel.SelectedBatchesName + "<br/> Total Marks : " + viewModel.TotalMarks); emailFormat = emailFormat.Replace("{UserName}", ""); var emailMessage = new MailModel { Body = emailFormat, Subject = subject, To = ConfigurationManager.AppSettings[Common.Constants.FromEmail] }; emailModels.Add(emailMessage); } foreach (var email in uploadOfflineMarks) { var studentName = studentList.Where(x => x.Email == email.EmailId).FirstOrDefault().Name; var message = "Absent for offline test paper."; if (email.IsPresent) { message = "Name - " + studentName + "<br />Title - " + viewModel.Title + "<br />Marks - " + email.ObtainedMarks + "/" + viewModel.TotalMarks + "<br />Percentage - " + email.Percentage; } var emailFormat = body; emailFormat = emailFormat.Replace("{BranchName}", userRole); emailFormat = emailFormat.Replace("{NotificationMessage}", message); emailFormat = emailFormat.Replace("{UserName}", ""); var emailModel = new MailModel { Body = emailFormat, Subject = subject, To = email.EmailId }; emailModels.Add(emailModel); } var emailModelArray = emailModels.ToArray(); if (emailModels.Count > 0) { HostingEnvironment.QueueBackgroundWorkItem(cancellationToken => _emailService.StartProcessing(emailModelArray, cancellationToken)); return(true); } else { return(false); } }
public CMSResult SendNotification(UploadOfflineMarksViewModel viewModel, string subject) { var cmsResult = new CMSResult(); List <StudentProjection> studentsLists = new List <StudentProjection>(); var studentsList = _studentService.GetAllStudentParentList(); List <StudentProjection> students = new List <StudentProjection>(); if (viewModel.SelectedBranches != null) { var branches = viewModel.SelectedBranches.Split(',').Select(x => int.Parse(x)).ToList(); studentsList = studentsList.Where(x => branches.Contains(x.BranchId)); } if (viewModel.ClassId != null && viewModel.SubjectId != 0) { studentsList = studentsList.Where(x => x.ClassId == viewModel.ClassId); } if (viewModel.SelectedBatches != null) { var batches = viewModel.SelectedBatches.Split(',').Select(x => int.Parse(x)).ToList(); studentsList = studentsList.Where(x => batches.Contains(x.BatchId)); } if (viewModel.SubjectId != null && viewModel.SubjectId != 0) { foreach (var student in studentsList) { foreach (var subjecttest in student.Subjects) { if (subjecttest.SubjectId == viewModel.SubjectId) { students.Add(student); } } } } if (students != null && students.Count > 0) { studentsLists.AddRange(students); } else { studentsLists.AddRange(studentsList.ToList()); } var uploadOfflineMarks = JsonConvert.DeserializeObject <List <UploadOfflineTestMarks> >(viewModel.StudentOfflineMarks); if (uploadOfflineMarks.Count > 0) { var result = SendEmail(viewModel, subject, uploadOfflineMarks, studentsLists); 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) { var result = SendSMS(viewModel, studentsLists, uploadOfflineMarks); 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 }); } } #region appNotification if (viewModel.AppNotification) { var response = SendAppNotification(viewModel, studentsList.ToList(), uploadOfflineMarks); 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 }); } } #endregion return(cmsResult); }