public ActionResult Create(CaseAssessment caseassessment, int caseId, int?caseMemberID) { caseassessment.LastUpdatedByWorkerID = CurrentLoggedInWorker.ID; try { if (caseassessment.StartDate > caseassessment.EndDate) { throw new CustomException("Start date can't be greater than end date."); } caseassessment.QualityOfLifeIDs = Request.Form["QualityOfLifeIDs"].ToString(true); //validate data if (ModelState.IsValid) { //call the repository function to save in database caseassessmentRepository.InsertOrUpdate(caseassessment, Request.Form); caseassessmentRepository.Save(); //redirect to list page after successful operation return(RedirectToAction(Constants.Views.Index, new { caseId = caseassessment.CaseID, CaseMemberID = caseassessment.CaseMemberID })); } else { foreach (var modelStateValue in ViewData.ModelState.Values) { foreach (var error in modelStateValue.Errors) { caseassessment.ErrorMessage = error.ErrorMessage; break; } if (caseassessment.ErrorMessage.IsNotNullOrEmpty()) { break; } } } } catch (CustomException ex) { caseassessment.ErrorMessage = ex.UserDefinedMessage; } catch (Exception ex) { ExceptionManager.Manage(ex); caseassessment.ErrorMessage = Constants.Messages.UnhandelledError; } List <CaseAssessmentLivingCondition> selectedCaseAssessmentLivingConditionList = new List <CaseAssessmentLivingCondition>(); string[] arraySelectedQOL = caseassessment.QualityOfLifeIDs.ToStringArray(',', true); if (arraySelectedQOL != null && arraySelectedQOL.Length > 0) { foreach (string qolID in arraySelectedQOL) { CaseAssessmentLivingCondition newCaseAssessmentLivingCondition = new CaseAssessmentLivingCondition() { QualityOfLifeID = qolID.ToInteger(true), CaseAssessmentID = caseassessment.ID, LastUpdateDate = DateTime.Now, LastUpdatedByWorkerID = caseassessment.LastUpdatedByWorkerID, }; newCaseAssessmentLivingCondition.Note = Request.Form["txtQualityOfLifeIDs" + qolID].ToString(true); selectedCaseAssessmentLivingConditionList.Add(newCaseAssessmentLivingCondition); } } WebHelper.CurrentSession.Content.Data = selectedCaseAssessmentLivingConditionList; if (caseassessment.CaseMemberID > 0) { CaseMember caseMember = casememberRepository.Find(caseassessment.CaseMemberID); if (caseMember != null) { ViewBag.DisplayID = caseMember.DisplayID; } } else { Case varCase = caseRepository.Find(caseassessment.CaseID); if (varCase != null) { ViewBag.DisplayID = varCase.DisplayID; } } //return view with error message if operation is failed return(View(caseassessment)); }
public ActionResult Edit(CaseAssessment caseassessment, int caseId, int?caseMemberID) { caseassessment.LastUpdatedByWorkerID = CurrentLoggedInWorker.ID; try { if (caseassessment.StartDate > caseassessment.EndDate) { throw new CustomException("Start date can't be greater than end date."); } caseassessment.QualityOfLifeIDs = Request.Form["QualityOfLifeIDs"].ToString(true); //validate data if (ModelState.IsValid) { //<JL:Comment:No need to check access again on post. On edit we are already checking permission.> //List<CaseWorker> caseworker = caseworkerRepository.FindAllByCaseID(caseId).Where(x => x.WorkerID == CurrentLoggedInWorker.ID).ToList(); //if ((caseworker == null || caseworker.Count() == 0) && caseassessment.ID > 0 && caseassessment.CreatedByWorkerID != CurrentLoggedInWorker.ID && CurrentLoggedInWorkerRoleIDs.IndexOf(1) == -1 && (CurrentLoggedInWorkerRoleIDs.IndexOf(SiteConfigurationReader.RegionalManagerRoleID) == -1)) //{ // WebHelper.CurrentSession.Content.ErrorMessage = "You are not eligible to do this action"; // //return Json(new { success = true, url = Url.Action(Constants.Actions.AccessDenied, Constants.Controllers.Home, new { Area = String.Empty }) }); // return RedirectToAction(Constants.Actions.AccessDenied, Constants.Controllers.Home, new { Area = String.Empty }); //} //</JL:Comment:07/08/2017> //call the repository function to save in database caseassessmentRepository.InsertOrUpdate(caseassessment, Request.Form); caseassessmentRepository.Save(); //redirect to list page after successful operation //return RedirectToAction(Constants.Views.Index, new { caseId = caseassessment.CaseID, CaseMemberID=caseassessment.CaseMemberID }); return(RedirectToAction(Constants.Views.Index, new { caseId = caseassessment.CaseID })); } else { foreach (var modelStateValue in ViewData.ModelState.Values) { foreach (var error in modelStateValue.Errors) { caseassessment.ErrorMessage = error.ErrorMessage; break; } if (caseassessment.ErrorMessage.IsNotNullOrEmpty()) { break; } } } } catch (CustomException ex) { caseassessment.ErrorMessage = ex.UserDefinedMessage; } catch (Exception ex) { ExceptionManager.Manage(ex); caseassessment.ErrorMessage = Constants.Messages.UnhandelledError; } try { List <CaseAssessmentLivingCondition> selectedCaseAssessmentLivingConditionList = new List <CaseAssessmentLivingCondition>(); string[] arraySelectedQOL = caseassessment.QualityOfLifeIDs.ToStringArray(',', true); if (arraySelectedQOL != null && arraySelectedQOL.Length > 0) { foreach (string qolID in arraySelectedQOL) { CaseAssessmentLivingCondition newCaseAssessmentLivingCondition = new CaseAssessmentLivingCondition() { QualityOfLifeID = qolID.ToInteger(true), CaseAssessmentID = caseassessment.ID, LastUpdateDate = DateTime.Now, LastUpdatedByWorkerID = caseassessment.LastUpdatedByWorkerID, }; newCaseAssessmentLivingCondition.Note = Request.Form["txtQualityOfLifeIDs" + qolID].ToString(true); selectedCaseAssessmentLivingConditionList.Add(newCaseAssessmentLivingCondition); } } WebHelper.CurrentSession.Content.Data = selectedCaseAssessmentLivingConditionList; if (caseassessment.CaseMemberID > 0) { CaseMember caseMember = casememberRepository.Find(caseassessment.CaseMemberID); if (caseMember != null) { ViewBag.DisplayID = caseMember.DisplayID; } } else { Case varCase = caseRepository.Find(caseassessment.CaseID); if (varCase != null) { ViewBag.DisplayID = varCase.DisplayID; } } } catch { } //return view with error message if the operation is failed return(View(caseassessment)); }
/// <summary> /// Add or Update caseassessment to database /// </summary> /// <param name="caseassessment">data to save</param> public void InsertOrUpdate(CaseAssessment caseassessment, NameValueCollection data) { bool isNew = false; caseassessment.LastUpdateDate = DateTime.Now; if (caseassessment.ID == default(int)) { //set the date when this record was created caseassessment.CreateDate = caseassessment.LastUpdateDate; //set the id of the worker who has created this record caseassessment.CreatedByWorkerID = caseassessment.LastUpdatedByWorkerID; //add a new record to database context.CaseAssessment.Add(caseassessment); isNew = true; } else { //update an existing record to database context.Entry(caseassessment).State = System.Data.Entity.EntityState.Modified; } Save(); if (caseassessment.ID > 0) { CaseMember existingCaseMember = context.CaseMember.SingleOrDefault(item => item.ID == caseassessment.CaseMemberID); if (existingCaseMember != null) { try { existingCaseMember.MemberStatusID = caseassessment.MemberStatusID; existingCaseMember.LastUpdateDate = DateTime.Now; existingCaseMember.LastUpdatedByWorkerID = caseassessment.LastUpdatedByWorkerID; context.Entry(existingCaseMember).State = System.Data.Entity.EntityState.Modified; Save(); } catch { context.Entry(existingCaseMember).State = System.Data.Entity.EntityState.Detached; } } List <CaseAssessmentLivingCondition> existingQOLList = new List <CaseAssessmentLivingCondition>(); if (!isNew) { existingQOLList = caseassessmentlivingconditionRepository.FindAllByCaseAssessmentID(caseassessment.ID).ToList(); if (existingQOLList == null) { existingQOLList = new List <CaseAssessmentLivingCondition>(); } } string selectedQOL = caseassessment.QualityOfLifeIDs; selectedQOL = selectedQOL.Replace("false", string.Empty); string[] arraySelectedQOL = selectedQOL.ToStringArray(',', true); if (arraySelectedQOL != null && arraySelectedQOL.Length > 0) { foreach (string qolID in arraySelectedQOL) { if (existingQOLList.Where(item => item.QualityOfLifeID == qolID.ToInteger(true)).Count() == 0) { CaseAssessmentLivingCondition newCaseAssessmentLivingCondition = new CaseAssessmentLivingCondition() { QualityOfLifeID = qolID.ToInteger(true), CaseAssessmentID = caseassessment.ID, LastUpdateDate = DateTime.Now, LastUpdatedByWorkerID = caseassessment.LastUpdatedByWorkerID, }; newCaseAssessmentLivingCondition.Note = data["txtQualityOfLifeIDs" + qolID].ToString(true); caseassessmentlivingconditionRepository.InsertOrUpdate(newCaseAssessmentLivingCondition); caseassessmentlivingconditionRepository.Save(); } else { CaseAssessmentLivingCondition caseAssessmentLivingCondition = caseassessmentlivingconditionRepository.Find(caseassessment.ID, qolID.ToInteger(true)); if (caseAssessmentLivingCondition != null) { caseAssessmentLivingCondition.Note = data["txtQualityOfLifeIDs" + qolID].ToString(true); caseAssessmentLivingCondition.LastUpdateDate = DateTime.Now; caseassessmentlivingconditionRepository.InsertOrUpdate(caseAssessmentLivingCondition); caseassessmentlivingconditionRepository.Save(); } } } } foreach (CaseAssessmentLivingCondition existingQOL in existingQOLList) { if (arraySelectedQOL == null || !arraySelectedQOL.Contains(existingQOL.QualityOfLifeID.ToString(true))) { caseassessmentlivingconditionRepository.Delete(existingQOL); caseassessmentlivingconditionRepository.Save(); } } CaseWorker primaryWorker = caseworkerRepository.FindPrimary(caseassessment.CaseID); if (primaryWorker != null) { string caseLink = "/CaseManagement/CaseAssessment?CaseID=" + caseassessment.CaseID + "&CaseMemberID=" + caseassessment.CaseMemberID; WorkerNotification workerNotification = new WorkerNotification() { IsRead = false, LastUpdateDate = DateTime.Now, LastUpdatedByWorkerID = caseassessment.LastUpdatedByWorkerID, ReferenceLink = caseLink, WorkerID = primaryWorker.WorkerID }; if (isNew) { workerNotification.Notification = "A new assessment has been added to a case. Please <a href='" + caseLink + "' target='_blank'>click here</a> to see the assessment detail."; } else { workerNotification.Notification = "An assessment has been updated. Please <a href='" + caseLink + "' target='_blank'>click here</a> to see the assessment detail."; } workernotificationRepository.InsertOrUpdate(workerNotification); workernotificationRepository.Save(); } } }