Beispiel #1
0
        public ActionResult QuoteDetail(Guid id)
        {
            QuoteRepository repositpory = new QuoteRepository();

            QuoteDetailsViewModel model = new QuoteDetailsViewModel();

            var             quoteInfo       = repositpory.GetQuoteById(id);
            var             currentUserName = User.Identity.Name;
            ApplicationUser user            = new ApplicationUser();

            using (ApplicationDbContext db = new ApplicationDbContext())
            {
                user = db.Users.FirstOrDefault(u => u.UserName == currentUserName);
            }

            model.Name          = user.FirstName + " " + user.LastName;
            model.Email         = user.Email;
            model.Id            = quoteInfo.Id;
            model.IsPurchased   = quoteInfo.IsPurchased;
            model.QuoteInfoList = quoteInfo.QuoteInfoList;
            model.QuotePrice    = quoteInfo.QuotePrice;
            model.StartAddress  = quoteInfo.StartAddress;
            model.UserId        = quoteInfo.UserId;
            model.Distance      = quoteInfo.Distance;
            model.EndAddress    = quoteInfo.EndAddress;

            return(View(model));
        }
        // GET: Sales/Quotes/Details/5
        public ActionResult Details(int id)
        {
            var model = new QuoteDetailsViewModel
            {
                Quote        = _db.Quotes.First(q => q.Id == id),
                QuoteMembers = _db.QuoteMembers.Where(qm => qm.RelatedQuoteId == id),
                QuoteLines   = _db.QuoteLines.Where(ql => ql.RelatedQuoteId == id).OrderByDescending(ql => ql.InsertDate)
            };

            return(View(model));
        }
        public QuoteDetailsViewModel GenerateQuote(string start, string end, string distance, string userName)
        {
            QuoteDetailsViewModel quote = new QuoteDetailsViewModel();
            decimal totalPrice          = 0;

            quote.StartAddress = start;
            quote.EndAddress   = end;
            quote.IsPurchased  = false;
            quote.Distance     = distance;
            using (ApplicationDbContext db = new ApplicationDbContext())
            {
                quote.UserId = db.Users.FirstOrDefault(x => x.UserName == userName).Id;
            }

            quote.QuoteInfoList = new List <QuoteInfo>();

            var shiftingCharges = Decimal.Round(Convert.ToDecimal(ConfigurationManager.AppSettings["LifitingCharges"].ToString()), 2);

            quote.QuoteInfoList.Add(new QuoteInfo {
                Key = "LifitingCharges", value = shiftingCharges
            });
            totalPrice += shiftingCharges;
            var packingCharges = Decimal.Round(Convert.ToDecimal(ConfigurationManager.AppSettings["PackingCharges"].ToString()), 2);

            quote.QuoteInfoList.Add(new QuoteInfo {
                Key = "PackingCharges", value = packingCharges
            });
            totalPrice += packingCharges;

            var travellingCharges = Decimal.Round(Convert.ToDecimal(ConfigurationManager.AppSettings["TravellingCostperMile"].ToString()) * Convert.ToDecimal(distance), 2);

            quote.QuoteInfoList.Add(new QuoteInfo {
                Key = "TravellingCharges", value = travellingCharges
            });
            totalPrice += travellingCharges;

            var gasCharges = Decimal.Round((totalPrice * Convert.ToInt16(ConfigurationManager.AppSettings["GasChargesPercent"].ToString())) / 100, 2);

            quote.QuoteInfoList.Add(new QuoteInfo {
                Key = "GasCharges", value = gasCharges
            });
            totalPrice += gasCharges;

            var serviceCharges = Decimal.Round((totalPrice * Convert.ToInt16(ConfigurationManager.AppSettings["ServiceChargesPercent"].ToString())) / 100, 2);

            quote.QuoteInfoList.Add(new QuoteInfo {
                Key = "ServiceCharges", value = serviceCharges
            });
            totalPrice += serviceCharges;

            var taxes = Decimal.Round((totalPrice * Convert.ToInt16(ConfigurationManager.AppSettings["TaxesPercent"].ToString())) / 100, 2);

            quote.QuoteInfoList.Add(new QuoteInfo {
                Key = "Taxes", value = taxes
            });
            totalPrice += taxes;

            quote.QuotePrice = totalPrice;

            using (EFDbContext db = new EFDbContext())
            {
                Quote _quote = new Quote
                {
                    StartAddress    = quote.StartAddress,
                    EndAddress      = quote.EndAddress,
                    Distance        = quote.Distance,
                    IsPurchased     = quote.IsPurchased,
                    CreateTimeStamp = DateTime.Now,
                    QuotePrice      = quote.QuotePrice,
                    QuoteInfo       = string.Join(",", quote.QuoteInfoList.Select(x => x.Key + "=" + x.value).ToArray()),
                    UserId          = quote.UserId
                };

                db.Entry(_quote).State = System.Data.Entity.EntityState.Added;

                db.SaveChanges();

                quote.Id = _quote.Id;
            }

            return(quote);
        }