Ejemplo n.º 1
0
        public IList <FreightDto> GetFreight(GetFreightInputDto inputDto)
        {
            var weightShoppingCart  = calculateWeightShoppingCart(inputDto);
            var tenantExpeditions   = _tenantExpeditionRepo.GetAllList(i => i.IsActive);
            var originDistrict      = GetCurrentTenant().District;
            var destinationDistrict = _districtRepo.FirstOrDefault(i => i.Id == inputDto.DistrictId);

            var activeExpeditionServices = tenantExpeditions.Select(i => i.ExpeditionService).ToList();
            var activeExpeditions        = new List <Expedition>();

            activeExpeditionServices.ForEach(i =>
            {
                if (!activeExpeditions.Any(activeExpedition => activeExpedition.Id == i.Expedition.Id))
                {
                    activeExpeditions.Add(i.Expedition);
                }
            });

            var getShippingCostInputDto = new GetShippingCostInputDto
            {
                Expeditions = activeExpeditions,
                Origin      = originDistrict,
                Destination = destinationDistrict,
                Weight      = weightShoppingCart
            };

            IList <FreightDto> result = new List <FreightDto>();
            var rajaOngkirResponses   = _rajaOngkirService.GetShippingCost(getShippingCostInputDto);

            foreach (var rajaOngkirResponse in rajaOngkirResponses)
            {
                foreach (var rajaOngkirResponseResult in rajaOngkirResponse.Results)
                {
                    if (activeExpeditionServices.Any(i => i.Expedition.RajaOngkirCode.ToLower() == rajaOngkirResponse.Code.ToLower() && i.RajaOngkirCode.ToLower() == rajaOngkirResponseResult.ServiceName.ToLower()))
                    {
                        var expeditionService     = activeExpeditionServices.FirstOrDefault(i => i.Expedition.RajaOngkirCode.ToLower() == rajaOngkirResponse.Code.ToLower() && i.RajaOngkirCode.ToLower() == rajaOngkirResponseResult.ServiceName.ToLower());
                        var estimatedTimeDelivery = new EstimatedTimeDelivery(rajaOngkirResponseResult.EstimatedToDelivery);
                        var freightDto            = new FreightDto()
                        {
                            ExpeditionServiceId = expeditionService.Id,
                            ExpeditionFullName  = expeditionService.FullName,
                            Cost = rajaOngkirResponseResult.Cost,
                            EstimatedTimeDelivery      = estimatedTimeDelivery,
                            Description                = estimatedTimeDelivery.GetEstimatedTimeDeliverySentence(DateTime.Now),
                            TotalWeight                = weightShoppingCart,
                            ExpeditionServiceGroupName = expeditionService.GroupName
                        };
                        result.Add(freightDto);
                    }
                }
            }

            return(result);
        }
Ejemplo n.º 2
0
        private decimal calculateWeightShoppingCart(GetFreightInputDto inputDto)
        {
            decimal weightShoppingCart = 0;

            foreach (var item in inputDto.Items)
            {
                var product = _productRepository.Get(item.ProductId);
                var weight  = product.Weight * item.Quantity;
                weightShoppingCart += weight;
            }
            return(weightShoppingCart);
        }
Ejemplo n.º 3
0
        public IEnumerable <FreightDto> Get(GetFreightInputDto inputDto)
        {
            var freights = _freigthAppService.GetFreight(inputDto);

            return(freights);
        }