public ActionResult Create()
        {
            var papers = _offlineTestPaper.GetOfflineTestPaper().ToList();
            var roles  = _aspNetRolesService.GetCurrentUserRole(User.Identity.GetUserId());

            if (roles == "BranchAdmin")
            {
                var projection = _branchAdminService.GetBranchAdminById(User.Identity.GetUserId());
                papers = _offlineTestPaper.GetOfflineTestPaper().ToList().Where(y => (y.SelectedBranches.Split(',').Where(x => !string.IsNullOrEmpty(x)).Select(int.Parse)).Contains(projection.BranchId)).ToList();
            }
            var viewModel = new OfflineTestStudentMarksViewModel();

            viewModel.Papers = new SelectList(papers, "OfflineTestPaperId", "Title");
            return(View(viewModel));
        }
        public ActionResult Create(OfflineTestStudentMarksViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                if (viewModel.TotalMarks < viewModel.MarksObtained)
                {
                    _logger.Warn("Marks obtained is grater than Total Marks!");

                    Warning("Marks obtained is grater than Total Marks!", true);
                }
                else
                {
                    var offlineTestStudentMarks = new OfflineTestStudentMarks
                    {
                        UserId             = viewModel.UserId,
                        OfflineTestPaperId = viewModel.OfflineTestPaperId,
                        ObtainedMarks      = viewModel.MarksObtained,
                    };
                    var result = _offlineTestStudentMarksService.Save(offlineTestStudentMarks);
                    if (result.Success)
                    {
                        string subject = "Student Test Marks";
                        result = SendNotificationToStudent(viewModel, subject);

                        var messages = "";
                        foreach (var message in result.Results)
                        {
                            messages += message.Message + "<br />";
                        }

                        Success(messages);
                        ModelState.Clear();
                        viewModel = new OfflineTestStudentMarksViewModel();
                    }
                    else
                    {
                        _logger.Warn(result.Results.FirstOrDefault().Message);
                        Warning(result.Results.FirstOrDefault().Message, true);
                    }
                }
            }
            viewModel = new OfflineTestStudentMarksViewModel();
            var papers = _offlineTestPaper.GetOfflineTestPaper().ToList();

            viewModel.Papers = new SelectList(papers, "OfflineTestPaperId", "Title");
            return(View(viewModel));
        }
 public ActionResult Delete(OfflineTestStudentMarksViewModel viewModel)
 {
     if (ModelState.IsValid)
     {
         var result = _offlineTestStudentMarksService.Delete(viewModel.OfflineTestStudentMarksId);
         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(OfflineTestStudentMarksViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                var offlineMarks = _repository.Project <OfflineTestStudentMarks, bool>(offlineStudentMarks => (from offline in offlineStudentMarks where offline.OfflineTestStudentMarksId == viewModel.OfflineTestStudentMarksId select offline).Any());
                if (!offlineMarks)
                {
                    _logger.Warn(string.Format("Offline Test Marks does not exists '{0}'.", viewModel.Title));
                    Danger(string.Format("Offline Test Marks does not exists '{0}'.", viewModel.Title));
                }
                if (viewModel.TotalMarks < viewModel.MarksObtained)
                {
                    _logger.Warn("Marks obtained is grater than Total Marks!");
                    Warning("Marks obtained is grater than Total Marks!", true);
                }
                else
                {
                    var result = _offlineTestStudentMarksService.Update(new OfflineTestStudentMarks {
                        OfflineTestStudentMarksId = viewModel.OfflineTestStudentMarksId, ObtainedMarks = viewModel.MarksObtained
                    });
                    if (result.Success)
                    {
                        string subject = "Student Test Marks Updated";
                        result = SendNotificationToStudent(viewModel, subject);
                        var messages = "";
                        foreach (var message in result.Results)
                        {
                            messages += message.Message + "<br />";
                        }

                        Success(messages);
                        ModelState.Clear();
                        return(RedirectToAction("Index"));
                    }
                    else
                    {
                        _logger.Warn(result.Results.FirstOrDefault().Message);
                        Warning(result.Results.FirstOrDefault().Message, true);
                    }
                }
            }
            return(View(viewModel));
        }
        public bool SendEmail(OfflineTestStudentMarksViewModel viewModel, string subject)
        {
            string userRole      = "";
            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();
            }
            body = body.Replace("{BranchName}", userRole);
            body = body.Replace("{NotificationMessage}", "<br/> Title : " + viewModel.Title + "<br/>Class Name : " + viewModel.ClassName + "<br/>Subject Name : " +
                                viewModel.SubjectName + "<br/>Batch Name : " + viewModel.BatchName +
                                "<br/> Total Marks : " + viewModel.TotalMarks.ToString() + "<br/> Student Marks : " + viewModel.MarksObtained.ToString());
            body = body.Replace("{UserName}", viewModel.StudentName);
            var emailMessage = new MailModel
            {
                Body          = body,
                Subject       = subject,
                To            = viewModel.StudentEmail,
                IsBranchAdmin = isBranchAdmin
            };

            _emailService.Send(emailMessage);
            return(true);
        }
        public CMSResult SendNotificationToStudent(OfflineTestStudentMarksViewModel viewModel, string subject)
        {
            var cmsResult = new CMSResult();

            if (viewModel.StudentEmail != null)
            {
                var result = SendEmail(viewModel, 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 (viewModel.StudentContact != null)
                {
                    var smsModel = new SmsModel
                    {
                        Message = "Offline Test Title : " + viewModel.Title + " " + "....check your Mail for more details",
                        SendTo  = viewModel.StudentContact
                    };

                    var result = _smsService.SendMessage(smsModel);
                    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.Title, listOfPlayerId);

            //    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);
        }