예제 #1
0
 private void ValidateDto(SalesDto dto)
 {
     if (dto == null)
     {
         throw new Exception("The sales model is null.");
     }
 }
예제 #2
0
 public SalesDto GetSaleById(int?id)
 {
     using (var dbContext = new SalesBogEntities())
     {
         var      dbSale  = dbContext.Sales.Find(id);
         SalesDto saleDto = new SalesDto
         {
             ID         = dbSale.ID,
             Consultant = new ConsultantDto {
                 ID = dbSale.ID, FirstName = dbSale.Consultants.FirstName, LastName = dbSale.Consultants.LastName
             },
             SaleDate        = dbSale.SaleDate,
             SaleDescription = dbSale.SaleDescription,
             Products        = dbSale.ProductSales.Select(s => new ProductDto
             {
                 ID           = s.Products.ID,
                 Price        = (decimal)s.Products.Price,
                 ProductCode  = s.Products.ProductCode,
                 ProductName  = s.Products.ProductName,
                 ProductCount = (int)s.ProductCount
             }).ToList()
         };
         return(saleDto);
     }
 }
        private void CreateBodyNotifyPayment(SalesDto result)
        {
            float totalSales = 0;

            email.Subject = "Notificación de venta de productos.";
            var body = new StringBuilder();

            body.Append($"<p>Estimado(a) {result.ProducerName}:</p>");
            body.Append(
                "<p>Se ha realizado una venta, en la cual, hay productos de su pertenencia involucrados, el detalle lo puede encontrar en nuestro sitio web, el resumen es el siguiente:</p>");

            body.Append("<table>");
            body.Append(
                "<thead><th>Fecha</th><th>Producto</th><th>Cantidad</th><th>Precio unitario</th><th>Total</th></thead>");
            body.Append("<tbody>");
            foreach (var p in result.Products)
            {
                body.Append("<tr>");
                body.Append($"<td>{result.SalesDate.ToShortDateString()}</td>");
                body.Append($"<td>{p.ProductName}</td>");
                body.Append($"<td>{p.Quantity}</td>");
                body.Append($"<td>${p.UnitPrice}</td>");
                body.Append($"<td>${p.ProductPrice}</td>");
                body.Append("</tr>");
                totalSales += p.ProductPrice;
            }
            body.Append("</tbody>");
            body.Append("</table>");
            body.Append(
                $"<p>El valor de la venta (${totalSales}), será agregado a su cuenta, en el momento que nuestro cliente haga efectivo el pago del servicio, su estado de cuenta será actualizado, puede revisar sus ventas  en la página web, en el apartado historial de ventas, en caso de dudas o consultas, no olvide indicarlas por nuestros medios oficiales o puede también comunicarse con su ejecutivo.</p>");
            body.Append("<p>Muchas gracias por su atención, hasta pronto.</p>");
            email.Body = body.ToString();
        }
예제 #4
0
        public bool CreateSale(SalesDto sale)
        {
            using (var dbContext = new SalesBogEntities())
            {
                var dbSale = new Sales
                {
                    ConsultantID    = sale.ConsultantID,
                    SaleDescription = sale.SaleDescription,
                    SaleDate        = DateTime.Now
                };

                var prodSales = new List <ProductSales>();
                var products  = new List <Products>();

                foreach (var item in sale.Products)
                {
                    prodSales.Add(new ProductSales {
                        ProductID = item.ID, Sales = dbSale, ProductCount = item.ProductCount
                    });
                }
                dbContext.ProductSales.AddRange(prodSales);

                return(dbContext.SaveChanges() > 0 ? true : false);
            }
        }
        public List <string> GetPartNumberPlan(SalesDto salesdto)
        {
            var infoscells           = ConvertRangeToArray(salesdto);
            List <InfoPlaDto> values = new List <InfoPlaDto>();
            int  contar = 0;
            bool repet  = true;
            //pega o valor dos partnumber para carregar os recebedores e beneficiadores
            List <string> partnumber = new List <string>();
            string        Valor      = null;

            while (repet == true)
            {
                foreach (var item in infoscells)
                {
                    Valor = GetValueCell(item.Item2 + contar, item.Item3);
                    switch (item.Item1)
                    {
                    case "RefClient":
                        if (Valor == "")
                        {
                            repet = false;
                            break;
                        }
                        if (partnumber.Contains(Valor) == false)
                        {
                            partnumber.Add(Valor);
                        }
                        break;
                    }
                }

                contar += 1;
            }
            return(partnumber);
        }
        public async Task <IActionResult> SaveOrUpdateSales(int salesId, SalesDto salesDto)
        {
            var sales = await this._salesDao.GetObjectById(salesId);

            if (sales == null)
            {
                /*sales = this._mapper.Map<Sales>(salesDto);
                 * sales.Id = salesId;
                 * await this._salesDao.Add(sales);*/
                return(NotFound());
            }
            else
            {
                //this._mapper.Map(salesDto, sales);
                //sales.Id = salesId;
                sales.CustomerId = salesDto.CustomerId;
                sales.ProductId  = salesDto.ProductId;
                sales.StoreId    = salesDto.StoreId;
                sales.DateSold   = salesDto.DateSold;
                await this._salesDao.Update(sales);
            }
            sales = await this._salesDao.GetObjectById(sales.Id);

            var rSalesDto = this._mapper.Map <SalesDto>(sales);

            return(CreatedAtRoute(nameof(GetSales), new { salesId = salesId }, rSalesDto));
        }
예제 #7
0
        public bool EditSales(SalesDto sale)
        {
            using (var dbContext = new SalesBogEntities())
            {
                var dbSale = dbContext.Sales.Where(w => w.ID == sale.ID).FirstOrDefault();

                dbSale.SaleDescription = sale.SaleDescription;
                dbSale.ConsultantID    = sale.ConsultantID;

                //Existing Products Edit
                var existingDBProducts = dbContext.ProductSales.Where(w => w.SaleID == sale.ID).ToList();

                var modelProducts = sale.Products.Where(w => w.IsDeleted == false && w.ID != 0).ToList();

                var equalProducts = (from e in existingDBProducts
                                     join m in modelProducts on e.ProductID equals m.ID
                                     where e.SaleID == sale.ID
                                     select e).ToList();

                if (equalProducts.Count > 0)
                {
                    foreach (var item in equalProducts)
                    {
                        var correspondingProduct = modelProducts.Where(w => w.ID == item.ProductID).FirstOrDefault();
                        item.ProductID    = correspondingProduct.ID;
                        item.ProductCount = correspondingProduct.ProductCount;
                    }
                }

                //New Products Add
                var newProducts = modelProducts.Where(s => !existingDBProducts.Where(w => w.SaleID == sale.ID).Select(a => a.ProductID).Contains(s.ID)).ToList();
                if (newProducts.Count() > 0)
                {
                    var prodSales = new List <ProductSales>();
                    foreach (var item in newProducts)
                    {
                        prodSales.Add(new ProductSales {
                            ProductID = item.ID, Sales = dbSale, ProductCount = item.ProductCount
                        });
                    }
                    dbContext.ProductSales.AddRange(prodSales);
                }
                // Deleted Product

                var deletedProducts = sale.Products.Where(w => w.IsDeleted == true).ToList();
                if (deletedProducts.Count() > 0)
                {
                    foreach (var item in deletedProducts)
                    {
                        var deletedItem = dbContext.ProductSales.Where(w => w.ProductID == item.ID && w.SaleID == dbSale.ID).FirstOrDefault();

                        dbContext.ProductSales.Remove(deletedItem);
                    }
                }

                return(dbContext.SaveChanges() > 0 ? true : false);
            }
        }
예제 #8
0
        public void BuatSales()
        {
            SalesDto snapshot = _sales.SnapShot();

            var expect = new SalesDto()
            {
                TglSales = new DateTime(2015, 1, 1), Nominal = 20000.0
            };

            Assert.AreEqual(expect, snapshot);
        }
        public async Task <ActionResult <SalesDto> > AddSales(SalesDto salesDto)
        {
            var  sales     = _mapper.Map <Sales>(salesDto);
            bool isSuccess = await this._salesDao.Add(sales);

            sales = await this._salesDao.GetObjectById(sales.Id);

            var rSalesDto = this._mapper.Map <SalesDto>(sales);

            return(CreatedAtRoute(nameof(GetSales), new { salesId = rSalesDto.Id }, rSalesDto));
        }
예제 #10
0
        public async Task <bool> SaveInfoPlan(SalesDto salesDto)
        {
            try
            {
                PluginRepository pluginRepository = new PluginRepository(_authentication, EndPointsAPI.ClientFieldsGet);
                var campos = await pluginRepository.Post <SalesDto>(ListFieldsSalesDto.ListNameClassSalesDto(salesDto, salesDto.UserName, salesDto.CD_Cliente));

                return(true);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
        public static Dictionary <string, string> ListNameClassSalesDto(SalesDto saleDto, string userName, string client)
        {
            Dictionary <string, string> SetListNameClass = new Dictionary <string, string>();

            SetListNameClass.Add("CD_Cliente", client);
            SetListNameClass.Add("UserName", userName);
            PropertyInfo[] infos = saleDto.GetType().GetProperties();
            foreach (PropertyInfo info in infos)
            {
                switch (info.Name)
                {
                case "RefClient":
                    SetListNameClass.Add(info.Name, info.GetValue(saleDto, null).ToString());
                    break;

                case "Receiver":
                    SetListNameClass.Add(info.Name, info.GetValue(saleDto, null).ToString());
                    break;

                case "Place":
                    if (saleDto.Place == null)
                    {
                        break;
                    }
                    SetListNameClass.Add(info.Name, info.GetValue(saleDto, null).ToString());
                    break;

                //case "DesiredPeriod":
                //    SetListNameClass.Add(info.Name, info.GetValue(saleDto, null).ToString());
                //    break;
                case "D1":
                    SetListNameClass.Add(info.Name, info.GetValue(saleDto, null).ToString());
                    break;

                case "D2":
                    SetListNameClass.Add(info.Name, info.GetValue(saleDto, null).ToString());
                    break;

                case "D3":
                    SetListNameClass.Add(info.Name, info.GetValue(saleDto, null).ToString());
                    break;
                }
            }

            return(SetListNameClass);
        }
예제 #12
0
        public IList <SalesDto> GetAll()
        {
            List <SalesDto> salesList = new List <SalesDto>();

            using (SqlConnection connection = DataBaseProvider.GetSqlConnection())
            {
                using (IDataReader reader = DataBaseProvider.ExecuteCommand <IDataReader>(connection, GETALL, CommandType.StoredProcedure))
                {
                    while (reader.Read())
                    {
                        SalesDto dto = DtoHelper.GetDto <SalesDto>(reader);
                        salesList.Add(dto);
                    }
                }
            }

            return(salesList);
        }
예제 #13
0
        public ActionResult Create([Bind(Include = "ID,SaleDate,ConsultantID,ProductID,SaleDescription")] SalesViewModel model)
        {
            if (ModelState.IsValid)
            {
                List <ProductDto> products = new List <ProductDto>();
                products.Add(new ProductDto {
                    ID = 1, ProductCount = 10
                });
                products.Add(new ProductDto {
                    ID = 3, ProductCount = 2
                });
                var testModel = new SalesDto
                {
                    ConsultantID    = 9,
                    SaleDescription = "sale4",
                    Products        = products
                };

                //var modelProducts = new List<ProductDto>();
                //var servModel = new SalesDto
                //{
                //    ConsultantID = model.ConsultantID,
                //    SaleDescription = model.SaleDescription
                //};

                //servModel.Products = model.Products.Select(a =>
                //new ProductDto
                //{
                //    ProductCount = a.ProductCount,
                //    ID = a.ID
                //}).ToList();

                _serviceClient.CreateSale(testModel);

                return(RedirectToAction("Index"));
            }

            LoadSelectLists();

            return(View(model));
        }
        public void NotifySalesByEmail(IList <PaymentResult> results)
        {
            var clientId  = string.Empty;
            var paymentId = string.Empty;

            foreach (var r in results)
            {
                if (!clientId.Equals(r.ClientId))
                {
                    clientId  = r.ClientId;
                    paymentId = r.PaymentId;
                    var salesDto = new SalesDto {
                        ProducerName  = r.ProducerName,
                        ProducerEmail = r.ProducerEmail,
                        SalesDate     = r.SalesDate,
                        Products      = GetSalesProductoFromResultsList(clientId, results)
                    };
                    emailNotifier.Notify(salesDto);
                }
            }
        }
        public List <Tuple <string, int, int> > ConvertRangeToArray(SalesDto salesDto)
        {
            try
            {
                List <Tuple <string, int, int> > list = new List <Tuple <string, int, int> >();

                Excel.Range cell = worksheet.Range[salesDto.RefClient];
                Tuple <string, int, int> values = new Tuple <string, int, int>("RefClient", cell.Row, cell.Column);
                list.Add(values);

                cell   = worksheet.Range[salesDto.Receiver];
                values = new Tuple <string, int, int>("Receiver", cell.Row, cell.Column);
                list.Add(values);

                if (salesDto.Place != null && salesDto.Place != "")
                {
                    cell   = worksheet.Range[salesDto.Place];
                    values = new Tuple <string, int, int>("Place", cell.Row, cell.Column);
                    list.Add(values);
                }

                cell   = worksheet.Range[salesDto.D1];
                values = new Tuple <string, int, int>("D1", cell.Row, cell.Column);
                list.Add(values);

                cell   = worksheet.Range[salesDto.D2];
                values = new Tuple <string, int, int>("D2", cell.Row, cell.Column);
                list.Add(values);

                cell   = worksheet.Range[salesDto.D3];
                values = new Tuple <string, int, int>("D3", cell.Row, cell.Column);
                list.Add(values);

                return(list);
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao mapear Planilha: " + ex.Message);
            }
        }
예제 #16
0
        public ActionResult Edit([Bind(Include = "ID,SaleDate,ConsultantID,ProductID,SaleDescription")] SalesViewModel salesViewModel)
        {
            if (ModelState.IsValid)
            {
                //Test
                List <ProductDto> products = new List <ProductDto>();
                products.Add(new ProductDto {
                    ID = 1, ProductCount = 10, IsDeleted = false
                });
                //products.Add(new ProductDto { ID = 3, ProductCount = 2, IsDeleted = true });
                products.Add(new ProductDto {
                    ID = 2, ProductCount = 15, IsDeleted = false
                });
                var c1 = new SalesDto
                {
                    ID              = 4,
                    ConsultantID    = 9,
                    SaleDescription = "sale4",
                    Products        = products
                };

                var prods = salesViewModel.Products.Select(s => new ProductDto
                {
                    ID           = s.ID,
                    IsDeleted    = s.IsDeleted,
                    ProductCount = s.ProductCount
                }).ToList();

                SalesDto c = new SalesDto
                {
                    ID = salesViewModel.ID,
                    SaleDescription = salesViewModel.SaleDescription,
                    Products        = prods
                };
                _serviceClient.EditSales(c);
                return(RedirectToAction("Index"));
            }
            return(View(salesViewModel));
        }
        public async Task <IActionResult> PartiallyUpdateSales(int salesId, JsonPatchDocument <SalesDto> patchDocument)
        {
            var sales = await this._salesDao.GetObjectById(salesId);

            if (sales == null)
            {
                var salesDto = new SalesDto();
                patchDocument.ApplyTo(salesDto, ModelState);
                if (!TryValidateModel(salesDto))  //验证输入是否合法
                {
                    return(ValidationProblem(ModelState));
                }
                sales    = this._mapper.Map <Sales>(salesDto);
                sales.Id = salesId;
                await this._salesDao.Add(sales);
            }
            else
            {
                var salesDto = this._mapper.Map <SalesDto>(sales); //entityObj => updateObj

                patchDocument.ApplyTo(salesDto, ModelState);       //apply patch

                if (!TryValidateModel(salesDto))                   //验证输入是否合法
                {
                    return(ValidationProblem(ModelState));
                }

                this._mapper.Map(salesDto, sales);  //updateObj=>entityObj
                sales.Id = salesId;
                await this._salesDao.Update(sales);
            }
            sales = await this._salesDao.GetObjectById(sales.Id);

            var rSalesDto = this._mapper.Map <SalesDto>(sales);

            return(CreatedAtRoute(nameof(GetSales), new { salesId = salesId }, rSalesDto));
        }
예제 #18
0
 public OutPutDto Put(SalesDto salesDto)
 {
     return(_salesService.UpdateSale(salesDto));
 }
예제 #19
0
 public OutPutDto Post([FromBody] SalesDto salesDto)
 {
     return(_salesService.CreateSale(salesDto));
 }
        public List <InfoPlaDto> GetDataforAdress(SalesDto salesdto, DateTime dtPedido, List <PlaceCorresp> placeCorresp, List <ReceiverCorresp> receiverCorresp)
        {
            var infoscells           = ConvertRangeToArray(salesdto);
            List <InfoPlaDto> values = new List <InfoPlaDto>();


            int  contar = 0;
            bool repet  = true;


            while (repet == true)
            {
                InfoPlaDto infoPlaDto = new InfoPlaDto();

                foreach (var item in infoscells)
                {
                    var Valor = GetValueCell(item.Item2 + contar, item.Item3);
                    switch (item.Item1)
                    {
                    case "Place":
                        infoPlaDto.Place = Valor;
                        break;

                    case "Receiver":
                        infoPlaDto.Receiver = Valor;
                        break;

                    case "RefClient":
                        infoPlaDto.RefClient = Valor;
                        break;

                    case "D1":
                        infoPlaDto.D1 = Valor;
                        break;

                    case "D2":
                        infoPlaDto.D2 = Valor;
                        break;

                    case "D3":
                        infoPlaDto.D3 = Valor;
                        break;

                    default:
                        break;
                    }
                    //sempre adiciona o valor da data do pedido
                    infoPlaDto.DesiredPeriod = dtPedido.ToString("MM/yyyy");
                }

                //entender se é para filtrar os dados ou apenas retornar o erro

                //insere a lista de recebedores
                infoPlaDto.ReceiverCorresp.AddRange(receiverCorresp);
                if (infoPlaDto.D1 == "" && infoPlaDto.D2 == "" && infoPlaDto.D3 == "")
                {
                    contar += 1;
                    if (infoPlaDto.RefClient == "" && infoPlaDto.Receiver == "")
                    {
                        repet = false;
                    }
                }
                else
                {
                    //insere a lista de beneficiadores, caso exitir
                    if (infoPlaDto.Place != "" || infoPlaDto.Place != null)
                    {
                        infoPlaDto.PlaceCorresp.AddRange(placeCorresp);
                    }

                    if (infoPlaDto.RefClient != "" && infoPlaDto.Receiver != "")
                    {
                        values.Add(infoPlaDto);
                    }
                    else
                    {
                        repet = false;
                    }
                    contar       += 1;
                    infoPlaDto.Id = contar;
                }
            }
            return(values);
        }
예제 #21
0
        //public async Task<IEnumerable<OrderViewModel>> GetSalesAsync()
        //=> await _client.GetFromJsonAsync<IEnumerable<OrderViewModel>>("o/api/v1/sales");

        public async Task SaleAsync(SalesDto salesDto)
        => await _client.PostAsJsonAsync("s/api/v1/sales", salesDto);
 public void Notify(SalesDto salesDto)
 {
     CreateBodyNotifyPayment(salesDto);
     SendAnEmail(salesDto.ProducerEmail, salesDto.ProducerName);
 }