//workaround code (Bad Code) // todo write clean Code public ActionResult Create(List <vw_DefendantsDecisionData> CaseDefentants, string Description, int?CaseID, int?CaseSessionID, string CaseResultType, string DecisionTypeID, string CaseNumber, string NextSessionDate, string IsReadyForFinalDecision, string JudgmentID, string CaseJudmentTypeID, [Bind(Prefix = "model")] DecisionsViewModel model) { ModelState.Clear(); // map parameter to model model.CaseID = CaseID.Value; model.CaseSessionID = CaseSessionID.Value; model.CaseID = CaseID.Value; model.CaseResultType = CaseResultType; model.CaseJudmentTypeID = (string.IsNullOrEmpty(CaseJudmentTypeID)) ? 0 : Convert.ToInt32(CaseJudmentTypeID); // Handle required if (string.IsNullOrEmpty(Description)) { ModelState.AddModelError("model.DecionDescription", Messages.RequiredErrorMessage); } // if Decision if (Convert.ToInt32(CaseResultType) == (int)DecreeTypes.Decision) { if (string.IsNullOrEmpty(DecisionTypeID)) { ModelState.AddModelError("model.DecisionTypeID", Messages.RequiredErrorMessage); } else { if (Convert.ToInt32(DecisionTypeID) == (int)DecisionTypes.L3_Postponed) { if (string.IsNullOrEmpty(NextSessionDate.ToString())) { ModelState.AddModelError("model.NextSessionDate", Messages.RequiredErrorMessage); } } } } else { if (string.IsNullOrEmpty(CaseJudmentTypeID)) { ModelState.AddModelError("model.CaseJudmentTypeID", Messages.RequiredErrorMessage); } else { if (Convert.ToInt32(CaseJudmentTypeID) == (int)DecisionLevels.Post) { if (string.IsNullOrEmpty(NextSessionDate.ToString())) { ModelState.AddModelError("model.NextSessionDate", Messages.RequiredErrorMessage); } if (string.IsNullOrEmpty(JudgmentID.ToString())) { ModelState.AddModelError("model.JudgmentID", Messages.RequiredErrorMessage); } } } } if (ModelState.IsValid) { vw_CaseDecision _CaseDecision = new vw_CaseDecision(); if (CaseDefentants != null) { foreach (var def in CaseDefentants) { if (def.DecisionType == 0) { model = PrepareDecisionsViewModel(CaseID.Value, CaseSessionID.Value); model.CaseID = CaseID.Value; model.CaseResultType = "2"; model.CaseSessionID = CaseSessionID.Value; model.CaseJudmentTypeID = (int)DecisionLevels.Final; model.DecionDescription = Description; return(CPartialView(model).WithErrorMessages("يجب اختيار نوع الحكم لجميع المتهمين")); } } _CaseDecision.CaseID = CaseID.Value; _CaseDecision.CaseSessionID = CaseSessionID.Value; _CaseDecision.DecisionDescription = Description; _CaseDecision.DecisionLevel = DecisionLevels.Final; _CaseDecision.DefendantsListJudges = CaseDefentants; _CaseDecision.DecisionType = DecisionTypes.L1_Guilty; } else { _CaseDecision.CaseID = CaseID.Value; _CaseDecision.CaseSessionID = Convert.ToInt32(CaseSessionID); _CaseDecision.DecisionDescription = Description; if (!string.IsNullOrEmpty(NextSessionDate)) { _CaseDecision.NextSessionDate = decisionService.GetCycleSessionDates((int)CaseSessionID).Where(m => m.ID == Convert.ToInt64(NextSessionDate)).Select(z => z.Date).SingleOrDefault(); // ta2gel } //CycleRollID added by Heba Basyony _CaseDecision.CycleRollID = (int)decisionService.GetCycleSessionDates((int)CaseSessionID).Where(m => m.ID == model.NextSessionDate).Select(z => z.ID).SingleOrDefault(); // ta2gel _CaseDecision.DecisionType = (CaseResultType == "2") ? (DecisionTypes)(Convert.ToInt32(model.JudgmentID)) : (DecisionTypes)Convert.ToInt32(DecisionTypeID); // No3 El Qarar 7okm // _CaseDecision.ReservedForJudgement =(IsReadyForFinalDecision == null)?null : Convert.ToBoolean(IsReadyForFinalDecision); // ma7goza ll 7okm if (IsReadyForFinalDecision != null) { _CaseDecision.ReservedForJudgement = Convert.ToBoolean(IsReadyForFinalDecision); } else { _CaseDecision.ReservedForJudgement = false; } _CaseDecision.DecisionLevel = (CaseResultType == "2") ? (DecisionLevels)Convert.ToInt32(CaseJudmentTypeID) : DecisionLevels.Decision; } var SaveDecisionStatus = decisionService.SaveDecision(_CaseDecision); switch (SaveDecisionStatus) { case SaveDecisionStatus.Saved: ViewBag.Saved = true; if (decisionService.IsDecisionSaved(model.CaseID, (int)model.CaseSessionID)) { DecisionsViewModel decisions = GetCaseDecisions(model.CaseID, (int)model.CaseSessionID); return(CPartialView("Create", PrepareDecisionsViewModel(model.CaseID, Convert.ToInt32(model.CaseSessionID), decisions)).WithSuccessMessages(JIC.Base.Resources.Messages.OperationCompletedSuccessfully)); } break; case SaveDecisionStatus.RollNotOpenedYet: ViewBag.Saved = false; if (decisionService.IsDecisionSaved(model.CaseID, (int)model.CaseSessionID)) { DecisionsViewModel decisions = GetCaseDecisions(model.CaseID, (int)model.CaseSessionID); return(CPartialView("Create", PrepareDecisionsViewModel(model.CaseID, Convert.ToInt32(model.CaseSessionID), decisions)).WithErrorMessages("لم تتم العملية .. رول الجلسة لم يتم فتحة")); } break; case SaveDecisionStatus.Failed_To_Save: ViewBag.Saved = false; if (decisionService.IsDecisionSaved(model.CaseID, (int)model.CaseSessionID)) { DecisionsViewModel decisions = GetCaseDecisions(model.CaseID, (int)model.CaseSessionID); return(CPartialView("Create", PrepareDecisionsViewModel(model.CaseID, Convert.ToInt32(model.CaseSessionID), decisions)).WithErrorMessages(JIC.Base.Resources.Messages.OperationNotCompleted)); } break; case SaveDecisionStatus.SentToJudge: ViewBag.Saved = false; if (decisionService.IsDecisionSaved(model.CaseID, (int)model.CaseSessionID)) { DecisionsViewModel decisions = GetCaseDecisions(model.CaseID, (int)model.CaseSessionID); return(CPartialView("Create", PrepareDecisionsViewModel(model.CaseID, Convert.ToInt32(model.CaseSessionID), decisions)).WithErrorMessages("لم تتم العملية .. تم الارسال للقاضى")); } break; case SaveDecisionStatus.SessionSentToJudge: ViewBag.Saved = false; if (decisionService.IsDecisionSaved(model.CaseID, (int)model.CaseSessionID)) { DecisionsViewModel decisions = GetCaseDecisions(model.CaseID, (int)model.CaseSessionID); return(CPartialView("Create", PrepareDecisionsViewModel(model.CaseID, Convert.ToInt32(model.CaseSessionID), decisions)).WithErrorMessages("لم تتم العملية .. تم الارسال للقاضى")); } break; } } return(CPartialView("_CaseDecisions", PrepareDecisionsViewModel(model.CaseID, (int)model.CaseSessionID, model)).WithPrefix("model")); }