示例#1
0
 public static FilterDeliveryDto CreateDto(this FilterDelivery entity)
 {
     return(new FilterDeliveryDto()
     {
         desiredDateInitial = entity.DateDeliveryInitial,
         clientName = entity.ClientName,
         productType = entity.ProductType,
         quantityProductInitial = entity.QuantityProductInitial,
         quantityProductFinal = entity.QuantityProductFinal,
         valueStatus = entity.ValueStatus
     });
 }
示例#2
0
        public List <Delivery> GetDeliveriesByFilter(FilterDelivery filterDelivery)
        {
            string            query      = GET_DELIVERIES_BY_FILTER;
            DynamicParameters parameters = new DynamicParameters();

            parameters.Add("DateDeliveryInitial", filterDelivery.DateDeliveryInitial);
            parameters.Add("DateDeliveryFinal", filterDelivery.DateDeliveryFinal);

            if (filterDelivery.ProductType.HasValue && filterDelivery.ProductType != 0)
            {
                query = query.Replace("{0}", " AND ProductType = @ProductType");
                parameters.Add("ProductType", filterDelivery.ProductType);
            }
            else
            {
                query = query.Replace("{0}", "");
            }

            if (!string.IsNullOrEmpty(filterDelivery.ClientName))
            {
                filterDelivery.ClientName = "%" + filterDelivery + "%";
                query = query.Replace("{1}", " AND c.Name LIKE @ClientName");
                parameters.Add("ClientName", filterDelivery.ClientName);
            }
            else
            {
                query = query.Replace("{1}", "");
            }

            if (filterDelivery.QuantityProductInitial.HasValue && filterDelivery.QuantityProductInitial.Value > 0)
            {
                query = query.Replace("{2}", " AND QuantityProductInitial >= @QuantityProductInitial");
                parameters.Add("QuantityProductInitial", filterDelivery.QuantityProductInitial.Value);
            }
            else
            {
                query = query.Replace("{2}", "");
            }

            if (filterDelivery.QuantityProductFinal.HasValue && filterDelivery.QuantityProductFinal.Value > 0)
            {
                query = query.Replace("{3}", " AND QuantityProductFinal <= @QuantityProductFinal");
                parameters.Add("QuantityProductFinal", filterDelivery.QuantityProductFinal.Value);
            }
            else
            {
                query = query.Replace("{3}", "");
            }

            if (filterDelivery.ValueStatus.HasValue)
            {
                query = query.Replace("{4}", " AND StatusDelivery = @StatusDelivery");
                parameters.Add("StatusDelivery", filterDelivery.ValueStatus.Value);
            }
            else
            {
                query = query.Replace("{4}", "");
            }

            var lookup = new Dictionary <int, Delivery>();

            using (var connection = OpenConnection())
            {
                connection.Query <Delivery, Product, Client, StatusDelivery, Delivery>(query, (d, p, c, s) => {
                    Delivery delivery;
                    if (!lookup.TryGetValue(d.DeliveryId, out delivery))
                    {
                        lookup.Add(d.DeliveryId, delivery = d);
                    }
                    if (delivery.Product == null)
                    {
                        delivery.Product                    = new Product();
                        delivery.Product.ProductType        = p.ProductType;
                        delivery.Product.DescriptionProduct = p.DescriptionProduct;
                    }
                    if (delivery.StatusDelivery == null)
                    {
                        delivery.StatusDelivery                   = new StatusDelivery();
                        delivery.StatusDelivery.ValueStatus       = s.ValueStatus;
                        delivery.StatusDelivery.DescriptionStatus = s.DescriptionStatus;
                    }
                    if (delivery.Client == null)
                    {
                        delivery.Client          = new Client();
                        delivery.Client.ClientId = c.ClientId;
                        delivery.Client.Name     = c.Name;
                    }
                    return(delivery);
                },
                                                                                       param: parameters,
                                                                                       splitOn: "ProductType, ClientId, DescriptionStatus").AsQueryable();
            }

            return(lookup.Values.AsList());
        }