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); }
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); }
public IEnumerable <FreightDto> Get(GetFreightInputDto inputDto) { var freights = _freigthAppService.GetFreight(inputDto); return(freights); }