public CMSResult Update(OfflineTestStudentMarks OfflineTestPaper)
        {
            CMSResult result = new CMSResult();
            var       marks  = _repository.Load <OfflineTestStudentMarks>(x => x.OfflineTestStudentMarksId == OfflineTestPaper.OfflineTestStudentMarksId);

            marks.ObtainedMarks = OfflineTestPaper.ObtainedMarks;
            marks.Percentage    = OfflineTestPaper.Percentage;
            marks.IsPresent     = OfflineTestPaper.IsPresent;
            _repository.Update(marks);
            _repository.CommitChanges();
            result.Results.Add(new Result {
                IsSuccessful = true, Message = string.Format("Offline Test Marks successfully updated!")
            });
            return(result);
        }
        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 CMSResult Save(OfflineTestStudentMarks newOfflineTestStudentMarks)
        {
            CMSResult result   = new CMSResult();
            var       isExists = _repository.Project <OfflineTestStudentMarks, bool>(OfflineTestStudentMarkss => (from offline in OfflineTestStudentMarkss where offline.OfflineTestPaperId == newOfflineTestStudentMarks.OfflineTestPaperId && offline.UserId == newOfflineTestStudentMarks.UserId select offline).Any());

            if (isExists)
            {
                result.Results.Add(new Result {
                    IsSuccessful = false, Message = string.Format("Student Marks already exists!")
                });
            }
            else
            {
                _repository.Add(newOfflineTestStudentMarks);
                _repository.CommitChanges();
                result.Results.Add(new Result {
                    IsSuccessful = true, Message = string.Format("Offline Test Student Marks successfully added!")
                });
            }
            return(result);
        }
        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));
        }