public ActionResult Edit(int CaseID, [Bind(Prefix = "PersonData")] Models.vw_PersonData PersonData, [Bind(Prefix = "Edit.CasePartyViewModels")] CasePartyViewModels CasePartyViewModels) { if (!CasePartyViewModels.OriginalPartyType.HasValue) { ModelState.AddModelError("OriginalPartyType", JIC.Base.Resources.Messages.RequiredErrorMessage); } if (!ModelState.IsValid) { return(CPartialView(PrepareCasePartiesViewModel(CaseID, PersonData, CasePartyViewModels))); } if (CasePartyViewModels.PartyType != CasePartyViewModels.OriginalPartyType) { using (var Transaction = this.DataContext.Database.BeginTransaction()) { var PartyData = PartiesService.GetCaseDefect(CaseID, CasePartyViewModels.id, CasePartyViewModels.OriginalPartyType); var DeleteStatus = PartiesService.DeleteCaseDefect(CaseID, CasePartyViewModels.id, CasePartyViewModels.OriginalPartyType); vw_CaseDefectData defect = new vw_CaseDefectData() { CaseID = CaseID, ID = CasePartyViewModels.id, IsCivilRightProsecutor = CasePartyViewModels.IsCivilRightProsecutor, //NationalID = this.NationalID, Order = CasePartyViewModels.PartiesOrder, //Name = PartyName, DefectType = CasePartyViewModels.PartyType, Crimes = CasePartyViewModels.CrimeTypes, DefendantStatus = CasePartyViewModels.DefendantStatus }; var AddStatus = PartiesService.AddCaseDefect(new vw_CaseDefectData { CaseID = CaseID, Crimes = CasePartyViewModels.CrimeTypes, DefectType = CasePartyViewModels.PartyType, IsCivilRightProsecutor = CasePartyViewModels.IsCivilRightProsecutor, PersonID = PartyData.PersonID, DefendantStatus = CasePartyViewModels.DefendantStatus ?? 0, }); //var AddStatus = PartiesService.AddCaseDefect(defect); if (DeleteStatus == DeleteDefectStatus.Deleted && AddStatus == SaveDefectsStatus.Saved) { Transaction.Commit(); } ViewBag.SavedEdite = true; return(CPartialView(PrepareCasePartiesViewModel(CaseID, PersonData, CasePartyViewModels)).WithErrorMessages(JIC.Base.Resources.Messages.OperationNotCompleted)); } } else { using (var Transaction = this.DataContext.Database.BeginTransaction()) { //Get PartyOriginalData var CasePartyData = PartiesService.GetCaseDefect(CaseID, CasePartyViewModels.id, CasePartyViewModels.PartyType); //UpdatePersonData Base.Views.vw_PersonData personData = PersonData.ToPersonData(); personData.ID = CasePartyData.PersonID; var PersonStatus = PersonService.EditPerson(personData); //Update Case Parties Data var CaseDefect = CasePartyViewModels.ToCaseDefectView(); CaseDefect.CaseID = CaseID; CaseDefect.PersonID = personData.ID; var DefectStatus = PartiesService.EditCaseDefect(CaseDefect); //If Party Exist in both Defendant and Victim we Needs to Update the Other As well var PersonParties = PartiesService.GetDefectsByCaseID(CaseID).Where(party => party.PersonID == CasePartyData.PersonID && party.DefectType != CasePartyViewModels.PartyType).ToList(); foreach (var party in PersonParties) { PartiesService.EditCaseDefect(new vw_CaseDefectData { CaseID = party.CaseID, Crimes = party.Crimes.Select(crime => crime.ID).ToList(), DefectType = party.DefectType, DefendantStatus = party.Status, IsCivilRightProsecutor = party.IsCivilRightProsecutor, Order = party.Order, PersonID = personData.ID, ID = party.ID }); } if (PersonStatus == PersonStatus.SuccefullSave && DefectStatus == SaveDefectsStatus.Saved) { Transaction.Commit(); ViewBag.SavedEdite = true; return(CPartialView(PrepareCasePartiesViewModel(CaseID, PersonData, CasePartyViewModels)).WithSuccessMessages(JIC.Base.Resources.Messages.OperationCompletedSuccessfully)); } else { return(CPartialView(PrepareCasePartiesViewModel(CaseID, PersonData, CasePartyViewModels)).WithErrorMessages(JIC.Base.Resources.Messages.OperationNotCompleted)); } } } // JavaScript("$(document).trigger('Parties:UpdateSuccefull');"); }