Example #1
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});
        }
Example #2
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);
 }
        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;
        }
Example #4
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);
 }
 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);
 }