public ActionResult GenerateWinners(WinnersGeneratorParameters filter) { ViewBag.filter = filter; ViewBag.BidID = new SelectList(_bidService.GetAllBid(), "BidID", "BidNumber"); ViewBag.RegionID = new SelectList(_adminUnitService.FindBy(t => t.AdminUnitTypeID == 2), "AdminUnitID", "Name"); //ModelState.AddModelError("Success", "Winner transporters for the specific BID and Region are generated."); return(View(filter)); }
public ActionResult GenerateWinners() { var filter = new WinnersGeneratorParameters(); ViewBag.filter = filter; ViewBag.BidID = new SelectList(_bidService.GetAllBid(), "BidID", "BidNumber"); ViewBag.RegionID = new SelectList(_adminUnitService.FindBy(t => t.AdminUnitTypeID == 2), "AdminUnitID", "Name"); if (TempData["CustomErrorMessage"] != null) { ModelState.AddModelError("Errors", TempData["CustomErrorMessage"].ToString()); } return(View(filter)); }
public ActionResult IdentifyWinners(int bidNumber, int regionID) { //bool result = false; var f = new WinnersGeneratorParameters() { BidID = bidNumber, RegionID = regionID }; var comparable = new List <TransportBidQuotationHeader>(); var bid = _bidService.FindById(bidNumber); if (bid != null) { var transportOrderCreated = _transportOrderService.FindBy(m => m.BidDocumentNo == bid.BidNumber).FirstOrDefault(); if (transportOrderCreated != null) { TempData["CustomErrorMessage"] = "Bid Winner Can not be generated (Transport Order already created from this bid)"; return(RedirectToAction("GenerateWinners", "PriceQuotation")); } } var bidWinners = _bidWinnerService.FindBy(m => m.BidID == bidNumber); if (bidWinners != null) { comparable = _transportBidQuotationHeaderService.FindBy(m => m.RegionID == regionID && m.BidId == bidNumber && m.Status >= 2); foreach (var winner in bidWinners) { _bidWinnerService.DeleteBidWinner(winner); } } else { comparable = _transportBidQuotationHeaderService.FindBy(m => m.RegionID == regionID && m.BidId == bidNumber && m.Status == 2); } ViewBag.Status = comparable == null ? 1 : 2; //TempData["Error"] = "There are no new proposals, winners may already have been identified"; var tr = new List <TransportBidQuotation>(); foreach (var transportBidQuotationHeader in comparable) { tr.AddRange(transportBidQuotationHeader.TransportBidQuotations); //transportBidQuotationHeader.TransportBidQuotations } var rawData = tr; if (rawData.Count > 0) { var grouped = ( from r in rawData group r by new { r.DestinationID, r.SourceID } into g select g ); foreach (var eachgroup in grouped) { var candidates = eachgroup.ToList(); var firstWinners = ( candidates.Where(candidate => candidate.Tariff == candidates.Min(t => t.Tariff)) ); var secondCandidates = candidates.Where(t => t.Tariff > candidates.Min(d => d.Tariff)); var transportBidQuotations = secondCandidates as List <TransportBidQuotation> ?? secondCandidates.ToList(); var secondWinners = ( transportBidQuotations.Where( secondCadidate => secondCadidate.Tariff == transportBidQuotations.Min(t => t.Tariff)) ); var firstBidWinners = TransformBidQuotationToBidWinner(firstWinners.ToList(), 1); var secondBidWinners = TransformBidQuotationToBidWinner(secondWinners.ToList(), 2); int bpid = _ApplicationSettingService.getBidWinnerWorkflow(); foreach (var firstBidWinner in firstBidWinners) { _bidWinnerService.AddBidWinner(firstBidWinner); //BusinessProcess bp = _BusinessProcessService.CreateBusinessProcessForObject(bpid, firstBidWinner.BidWinnerID, "Bid Winner"); //firstBidWinner.BusinessProcess = bp; //firstBidWinner.BusinessProcessID = bp.BusinessProcessID; } foreach (var secondBidWinner in secondBidWinners) { _bidWinnerService.AddBidWinner(secondBidWinner); //BusinessProcess bp = _BusinessProcessService.CreateBusinessProcessForObject(bpid, secondBidWinner.BidWinnerID, "Bid Winner"); //secondBidWinner.BusinessProcess = bp; } } foreach (var transportBidQuotationHeader in comparable) { transportBidQuotationHeader.Status = 3; _transportBidQuotationHeaderService.UpdateTransportBidQuotationHeader(transportBidQuotationHeader); } //result = true; } _bidWinnerService.Save(); return(RedirectToAction("Winners", new { BidID = bidNumber, RegionID = regionID })); }