private void CalculateRevenueForOrder(Order order)
        {
            OrderStatus orderStatus = _db.OrderStatuses.FirstOrDefault(x => x.Id == order.OrderStatusId);

            if (orderStatus != null)
            {
                if (orderStatus.IsPaid)
                {
                    double driverPrice = order.Area.DriverPrice;
                    AreaGroupClientPrices clientPriceObj = _db.AreaGroupClientPrices.FirstOrDefault(x => x.ClientId == order.ClientId && x.AreaId == order.AreaId);
                    double clientPrice    = clientPriceObj != null ? clientPriceObj.Price : 0;
                    double companyRevenue = clientPrice - driverPrice;
                    double driverRevenue  = driverPrice;
                    double clientRevenue  = order.OrderTotalPrice - companyRevenue - driverRevenue - order.AddedPrice;
                    order.CoompanyRevenue = companyRevenue;
                    order.DriverRevenue   = driverRevenue;
                    order.ClientRevenue   = clientRevenue;
                }
                else
                {
                    order.CoompanyRevenue = 0;
                    order.DriverRevenue   = 0;
                    order.ClientRevenue   = 0;
                }
            }
        }
        public IActionResult UpdateClientAreaGroupPrice(ClientAreaGroupPriceDto clientAreaGroupPriceDto)
        {
            AreaGroupClientPrices clientAreaGroupPrice = _db.AreaGroupClientPrices.Where(x => x.Id == clientAreaGroupPriceDto.PriceId && x.AreaId == clientAreaGroupPriceDto.AreaId).FirstOrDefault();

            if (clientAreaGroupPrice != null)
            {
                clientAreaGroupPrice.Price = (double)clientAreaGroupPriceDto.Price;
                _db.SaveChanges();
                return(new OkObjectResult(true));
            }
            else
            {
                AreaGroupClientPrices newClientAreaGroupPrice = new AreaGroupClientPrices
                {
                    AreaId   = (int)clientAreaGroupPriceDto.AreaId,
                    ClientId = (int)clientAreaGroupPriceDto.ClientId,
                    Price    = (double)clientAreaGroupPriceDto.Price
                };

                _db.AreaGroupClientPrices.Add(newClientAreaGroupPrice);
                _db.SaveChanges();
                return(new OkObjectResult(true));
            }
        }
Пример #3
0
        public bool AddAreaGroupPriceForClientId(long Id)
        {
            List <Area> areas   = _db.Areas.ToList();
            Client      clients = _db.Clients.FirstOrDefault(x => x.Id == Id);


            List <AreaGroupClientPrices> groupPrices = new List <AreaGroupClientPrices>();

            foreach (Area area in areas)
            {
                double price = 0;
                switch (area.CityId)
                {
                case 22: price = 2; break;

                case 23: price = 3; break;

                case 24: price = 3; break;

                case 25: price = 3; break;

                case 26: price = 3; break;

                case 27: price = 3; break;

                case 28: price = 6; break;

                case 29: price = 3; break;

                case 30: price = 3; break;

                case 31: price = 3.5; break;

                case 32: price = 3.5; break;

                case 33: price = 3.5; break;

                case 34: price = 3.5; break;

                case 35: price = 3.5; break;

                case 36: price = 3; break;

                case 37: price = 3; break;

                case 38: price = 5; break;

                case 39: price = 5; break;

                case 41: price = 5; break;

                case 42: price = 5; break;
                }

                switch (area.Id)
                {
                case 58: price = 3; break;

                case 63: price = 3; break;

                case 403: price = 2.5; break;

                case 90: price = 3; break;

                case 96: price = 3; break;

                case 95: price = 2.5; break;

                case 97: price = 2.5; break;

                case 93: price = 2.5; break;

                case 104: price = 2.5; break;

                case 146: price = 3; break;

                case 152: price = 3; break;

                case 113: price = 2.5; break;

                case 371: price = 2.5; break;

                case 112: price = 2.5; break;

                case 306: price = 5; break;

                case 304: price = 5; break;

                case 305: price = 5; break;
                }

                AreaGroupClientPrices prices = new AreaGroupClientPrices
                {
                    AreaId   = area.Id,
                    ClientId = clients.Id,
                    Price    = price,
                    Id       = 0
                };
                groupPrices.Add(prices);
            }
            _db.AreaGroupClientPrices.AddRange(groupPrices);
            _db.SaveChanges();
            return(true);
        }