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}); }
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 IdentifyWinners(int bidNumber, int regionID) { //bool result = false; var f = new WinnersGeneratorParameters() { BidID = bidNumber, RegionID = regionID }; var 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 = _transportBidQuotationService.FindBy( // t => t.BidID == bidNumber // && t.AdminUnit.AdminUnit2.AdminUnit2.AdminUnitID == regionID // && !t.IsWinner); var rawData = tr; //var rawData = _transportBidQuotationService.FindBy( // t => t.BidID == bidNumber // && t.Destination.AdminUnit2.AdminUnit2.AdminUnitID == regionID // && !t.IsWinner); 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 transportBidQuotation in rawData) //{ // transportBidQuotation.IsWinner = true; // _transportBidQuotationService.UpdateTransportBidQuotationHeader(transportBidQuotation); //} foreach (var transportBidQuotationHeader in comparable) { transportBidQuotationHeader.Status = 3; _transportBidQuotationHeaderService.UpdateTransportBidQuotationHeader(transportBidQuotationHeader); } //result = true; } _bidWinnerService.Save(); //return RedirectToAction("Winners",new {filter=f}); //return RedirectToAction("Winners", "PriceQuotation",new{filter=f}); return RedirectToAction("Winners", new {BidID = bidNumber, RegionID=regionID}); //return RedirectToAction() // _BusinessProcessService.Save(); //return result; }
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 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"); return View(filter); }