示例#1
0
 public void SaveToDatabase(EligibleSupplier eligibleSupplier)
 {
     _databaseContext.EligibleSuppliers.Add(eligibleSupplier);
     _databaseContext.SaveChanges();
 }
示例#2
0
        public void EvaluationTenderBids(int tenderId)
        {
            var tender           = _databaseContext.Tenders.Include(x => x.EligibleSuppliers).Single(x => x.TenderId == tenderId);
            var submittedTenders = _databaseContext.TenderBidSubmissions.Where(t => t.TenderId == tenderId).ToList();

            decimal totProductQtAmt  = 0;
            decimal totProductRecAmt = 0;
            decimal priceDifference  = 0;

            foreach (var tenderBid in submittedTenders)
            {
                var tenderBidProducts = _databaseContext.TenderBidSubmissionProducts.Where(t => t.TenderBidSubmissionId == tenderBid.TenderBidSubmissionId).ToList();

                foreach (var product in tenderBidProducts)
                {
                    var prod = _databaseContext.Products.Find(product.ProductId);
                    product.RecommendedPrice = prod.ProductPrice;
                    totProductQtAmt         += product.QuotedPrice * product.Quantity;
                    totProductRecAmt        += product.RecommendedPrice * product.Quantity;
                    priceDifference         += totProductQtAmt - totProductRecAmt;
                }

                var company = _databaseContext.TenderBidSubmissions.Where(c => c.RegistrationNumber == tenderBid.RegistrationNumber).FirstOrDefault();

                decimal percentage = 0;

                if (priceDifference > 0)
                {
                    percentage = ((priceDifference / tenderBid.TotalQuotation) * 100);
                }

                int score = 0;
                if (percentage > 27 && percentage <= 30)
                {
                    score = 1;
                }
                else if (percentage > 21 && percentage <= 24)
                {
                    score = 2;
                }
                else if (percentage > 18 && percentage < 21)
                {
                    score = 3;
                }
                else if (percentage > 15 && percentage <= 18)
                {
                    score = 4;
                }
                else if (percentage > 10 && percentage <= 15)
                {
                    score = 5;
                }
                else
                {
                    continue;
                }

                var eligibleSupplier = new EligibleSupplier
                {
                    RegistrationNumber = company.RegistrationNumber,
                    CompanyName        = company.CompanyName,
                    Score         = score,
                    InflationRate = percentage,
                    DateEvaluated = DateTime.Now,
                    TenderId      = tender.TenderId
                };

                tender.EligibleSuppliers.Add(eligibleSupplier);
                _databaseContext.SaveChanges();
            }
        }