public static List<RequisitionViewModel> ReturnRequisitionGroupByReuisitionNo(List<ReliefRequisition> requisition ) { if (requisition==null) return new List<RequisitionViewModel>(); var result = (from req in requisition select new RequisitionViewModel() { RequisitionNo =req.RequisitionNo, RequisitionId = req.RequisitionID, RequisitionDate = DateTime.Parse(req.RequestedDate.ToString()), Commodity = req.Commodity.Name, BenficiaryNo = req.ReliefRequisitionDetails.Sum(a=>a.BenficiaryNo), Amount = req.ReliefRequisitionDetails.Sum(a => a.Amount).ToPreferedWeightUnit(), Status = int.Parse( req.Status.ToString()), Region = req.AdminUnit.Name, RegionId = (int) req.RegionID, Zone = req.AdminUnit1.Name, Program = req.Program.Name, ProgramId = req.ProgramID, Round = req.Round, Month = req.Month, MonthName = RequestHelper.GetMonthList().Find(t => t.Id == req.Month).Name, AmountAllocated = req.ReliefRequisitionDetails.Sum(a=>a.Amount), StrRequisitionDate = req.RequestedDate.Value.ToCTSPreferedDateFormat(UserAccountHelper.UserCalendarPreference()) }); var r = new List<RequisitionViewModel>(); foreach (var req in requisition) { var n = new RequisitionViewModel(); n.RequisitionNo = req.RequisitionNo; n.RequisitionId = req.RequisitionID; n.RequisitionDate = DateTime.Parse(req.RequestedDate.ToString()); n.Commodity = req.Commodity.Name; n.BenficiaryNo = req.ReliefRequisitionDetails.Sum(a => a.BenficiaryNo); var m = req.ReliefRequisitionDetails.Sum(a => a.Amount); n.Amount = m.ToPreferedWeightUnit(); n.Status = int.Parse(req.Status.ToString()); n.Region = req.AdminUnit.Name; n.RegionId = (int)req.RegionID; n.Zone = req.AdminUnit1.Name; n.Program = req.Program.Name; n.Round = req.Round; n.Month = req.Month; n.MonthName = RequestHelper.GetMonthList().Find(t => t.Id == req.Month).Name; n.AmountAllocated = req.ReliefRequisitionDetails.Sum(a => a.Amount); n.StrRequisitionDate = req.RequestedDate.Value.ToCTSPreferedDateFormat(UserAccountHelper.UserCalendarPreference()); r.Add(n); } return r.ToList(); }
public ActionResult SaveProjectAllocation(RequisitionViewModel requisitionViewModel, FormCollection form, string hub, string datepicker, int RequisitionId, int Remaining=0, int PCodeqty=0, int SICodeqty=0) { DateTime date; bool isProjectCodeSelected = false; bool isSICodeSelected = false; try { date = DateTime.Parse(datepicker); //checkes if date is ethiopian date. if it is then it will enter to the catch and convert to gragorian for persistance. } catch (Exception) { var strEth = new getGregorianDate(); date = strEth.ReturnGregorianDate(datepicker); } bool isLastAssignment = false; int? pCode =null; int? siCode=null; if (Remaining < PCodeqty + SICodeqty) { ModelState.AddModelError("Errors",@"Amount entered is greater than the remaining quantity "); TempData["ModelState"] = ModelState; return RedirectToAction("Assign", "ProjectAllocation", new { ReqId= RequisitionId, Remaining = Remaining}); } var requisitionId = requisitionViewModel.RequisitionId; try { pCode = int.Parse(form["PCCode"].ToString(CultureInfo.InvariantCulture)); isProjectCodeSelected = true; } catch { pCode = null; } try { siCode = int.Parse(form["SICode"].ToString(CultureInfo.InvariantCulture)); isSICodeSelected = true; } catch(Exception ex) { siCode = null; var log = new Logger(); log.LogAllErrorsMesseges(ex,_log); } if (isProjectCodeSelected == false && isSICodeSelected == false) { ModelState.AddModelError("Errors", @"SI code or Project Code is not selected."); TempData["ModelState"] = ModelState; return RedirectToAction("Assign", "ProjectAllocation", new { ReqId = RequisitionId, Remaining = Remaining }); } if ((isProjectCodeSelected && PCodeqty == 0) || (isSICodeSelected && SICodeqty == 0)) { ModelState.AddModelError("Errors", @"Value entered for Projecte Code/SI Code is zero or Invalid. "); TempData["ModelState"] = ModelState; return RedirectToAction("Assign", "ProjectAllocation", new { ReqId = RequisitionId, Remaining = Remaining }); } var hubAllocation = _hubAllocationService.GetAllocatedHubByRequisitionNo(requisitionId); var newProjectAllocation = new ProjectCodeAllocation { AllocatedBy = 1, AlloccationDate = date, Amount_FromProject = PCodeqty, ProjectCodeID = pCode, Amount_FromSI = SICodeqty, SINumberID = siCode, HubAllocationID = hubAllocation.HubAllocationID }; if (Remaining == PCodeqty + SICodeqty) isLastAssignment = true; try { _projectCodeAllocationService.AddProjectCodeAllocation(newProjectAllocation, requisitionId, isLastAssignment); } catch(Exception exception) { var log = new Logger(); log.LogAllErrorsMesseges(exception,_log); ModelState.AddModelError("Errors",@"Can't add new project code allocation"); } if (isLastAssignment) { return RedirectToAction("AllocateProjectCode", "ProjectAllocation"); } else { return RedirectToAction("AssignedprojectCodes", "ProjectAllocation",new {requisitionId= requisitionId}); } }