/// <summary> /// Add new Case to System /// and reserve a date for it /// </summary> /// <param name="Case">All Case MetaData</param> /// <returns>Response if Saved or Not with error codes</returns> public Response AddNewCase(NewCase Case) { try { //Validate Pros Data //This will Be our big player //if any thing passes this validation //Data could be wrong if (!caseValidator.CValidate(Case, out List <int> ErrorCodes)) { return(ReturnErrorResponse(ErrorCodes)); } using (var Transaction = databaseRepository.BeginTransaction()) { //Save Basic Data First Base.Views.vw_FaultCaseBasicData caseBasicData = Case.MapToBasicData(); var caseSaveStatus = caseService.AddBasicData(caseBasicData); if (caseSaveStatus != CaseSaveStatus.Saved) { return(ReturnErrorResponse(caseSaveStatus)); } if (!prosecutionCaseService.LinkProsCase(Case.Business_Case_Id, caseBasicData.CaseID)) { return(Response.Failed); } //Save Case Description if (!caseService.AddCaseDescription(Case.MapCaseDescription(caseBasicData.CaseID))) { return(Response.Failed); } //Save First Session Date long SessionID = GetSessionID(Case.First_Session); if (!CaseConfiguration.AddCaseConfiguration(Case.MapCaseSessionConfiguration(SessionID, caseBasicData.CaseID))) { return(Response.Failed); } //Todo Save CaseParty Data foreach (var CaseParty in Case.CaseParties) { //this will check if the nationalityExist or not and if not create it CaseParty.NationalityID = lookupService.GetNationalityIDOrCreate(CaseParty.Nationality); var PersonSaveStatus = personService.AddPerson(CaseParty.MapPersonData(), out long PersonID); if (PersonSaveStatus != PersonStatus.SuccefullSave) { return(ReturnErrorResponse(PersonSaveStatus)); } SaveDefectsStatus caseDefectSaveStatus = this.defectsService.AddCaseDefect(CaseParty.MapCaseDefectData(caseBasicData.CaseID, PersonID)); if (caseDefectSaveStatus != SaveDefectsStatus.Saved) { return(ReturnErrorResponse(caseDefectSaveStatus)); } var Defects = defectsService.GetDefectsByCaseID(caseBasicData.CaseID) .Where(caseDefect => caseDefect.PersonID == PersonID); foreach (var caseDefect in Defects) { if (!prosecutionCaseService.LinkProsCaseParty(CaseParty.ID, caseDefect.ID, caseDefect.DefectType)) { return(Response.Failed); } } } //Todo Save Attachments if (Transaction != null) { Transaction.Commit(); } return(Response.Success); } } catch (Exception ex) { logger.LogException(ex); return(Response.Failed); } }
/// <summary> /// Save a complete Case to the System /// </summary> /// <param name="Case">All Case MetaData</param> /// <returns>Response if Saved or Not with error codes</returns> public Response AddCompleteCase(CompleteCase Case) { try { using (var Transaction = databaseRepository.BeginTransaction()) { //Validate Pros Data //This will Be our big player //if any thing passes this validation //Data could be wrong if (!completeCaseValidator.CValidate(Case, out List <int> ErrorCodes)) { return(ReturnErrorResponse(ErrorCodes)); } //Save Basic Data First Base.Views.vw_FaultCaseBasicData vw_FaultCaseBasicData = Case.MapToBasicData(); var caseSaveStatus = caseService.AddBasicData(vw_FaultCaseBasicData); if (caseSaveStatus != CaseSaveStatus.Saved) { return(ReturnErrorResponse(caseSaveStatus)); } //Save Case Description if (!caseService.AddCaseDescription(Case.MapCaseDescription(vw_FaultCaseBasicData.CaseID))) { return(Response.Failed); } //Save First Session Date long SessionID = GetSessionID(Case.FinalSession); if (!CaseConfiguration.AddCaseConfiguration(Case.MapCaseSessionConfiguration(SessionID, vw_FaultCaseBasicData.CaseID))) { return(Response.Failed); } //Todo Save CaseParty Data foreach (var CaseParty in Case.CaseParties) { var PersonSaveStatus = personService.AddPerson(CaseParty.MapPersonData(), out long PersonID); if (PersonSaveStatus != PersonStatus.SuccefullSave) { return(ReturnErrorResponse(PersonSaveStatus)); } SaveDefectsStatus caseDefectSaveStatus = this.defectsService.AddCaseDefect(CaseParty.MapCaseDefectData(vw_FaultCaseBasicData.CaseID, PersonID)); if (caseDefectSaveStatus != SaveDefectsStatus.Saved) { return(ReturnErrorResponse(caseDefectSaveStatus)); } //Todo Save Decision } //Todo Save Attachments Transaction.Commit(); return(Response.Success); } } catch (Exception ex) { logger.LogException(ex); return(Response.Failed); } }