Ejemplo n.º 1
0
 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));
 }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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 }));
        }