コード例 #1
0
        public async Task RemoveSale(SaleDTO sale)
        {
            var targetSale = Mapper.Map <SaleDTO, Sale>(sale);

            salesRepository.Delete(0);
            await salesRepository.Save();
        }
コード例 #2
0
        public async Task Handler_GivenValidData_ShouldUpdateSale()
        {
            // Arrange
            var sale = new SaleDTO
            {
                Id     = 2,
                Date   = new DateTime(2019, 01, 01),
                Amount = 600,
            };

            var command = new UpdateSaleCommand {
                Model = sale
            };

            // Act
            var handler = new UpdateSaleCommand.UpdateSaleCommandHandler(Context);
            await handler.Handle(command, CancellationToken.None);

            var entity = Context.Sales.Find(sale.Id);

            // Assert
            entity.ShouldNotBeNull();

            entity.Date.ShouldBe(command.Model.Date);
            entity.Amount.ShouldBe(command.Model.Amount);
        }
コード例 #3
0
        public async Task UpdateSale(SaleDTO sale)
        {
            var targetSale = mapper.Map <SaleDTO, Sale>(sale);

            salesRepository.Edit(targetSale);
            await salesRepository.Save();
        }
コード例 #4
0
        public void UpdateProductStocks(SaleDTO sale, int userId)
        {
            var errorMessage = string.Empty;
            var workplaceId  = new UserDalFacade().GetAccountUser(userId).WorkPlace.Id.Value;
            var productStock =
                new ProductStockDalFacade().GetProductStockByPlaceAndProduct(workplaceId, sale.ProductId);

            if (sale.Quantity > productStock.Quantity)
            {
                errorMessage +=
                    $"Not Enough Product ({productStock.ProductId}-{productStock.ProductName}) in ProductStock to complete transaction.";
            }

            if (!string.IsNullOrEmpty(errorMessage))
            {
                errorMessage += Environment.NewLine;
            }

            if (!string.IsNullOrEmpty(errorMessage))
            {
                throw new ArgumentOutOfRangeException(errorMessage);
            }

            var productInStockMinus =
                new ProductStockDalFacade().GetProductStockByPlaceAndProduct(workplaceId, sale.ProductId);

            productInStockMinus.Quantity -= sale.Quantity;
            new ProductStockDalFacade().Update(productInStockMinus);
        }
コード例 #5
0
        private async Task FindOutIds(SaleDTO sale)
        {
            if (await Clients.DoesClientExistAsync(sale.Clients).ConfigureAwait(false))
            {
                sale.Clients.ID = await Clients.GetIdAsync(sale.Clients.Name, sale.Clients.Surname)
                                  .ConfigureAwait(false);
            }
            else
            {
                ThrowArgumentException("There is no such Client. Register it!");
            }

            if (await Managers.DoesManagerExistAsync(sale.Managers))
            {
                sale.Managers.ID = await Managers.GetIdAsync(sale.Managers.Surname).ConfigureAwait(false);
            }
            else
            {
                ThrowArgumentException("There is no such Manager. Register it!");
            }

            if (await Products.DoesProductExistAsync(sale.Products))
            {
                sale.Products.ID = await Products.GetIdAsync(sale.Products.Name).ConfigureAwait(false);
            }
            else
            {
                ThrowArgumentException("There is no such Product. Register it!");
            }
        }
コード例 #6
0
        public bool SaveUser(SaleDTO data)
        {
            try
            {
                Sales sale = new Sales
                {
                    ClientId        = data.ClientId,
                    UserId          = data.UserId,
                    Code            = data.Code,
                    Iva             = data.Iva,
                    NetoWorth       = data.NetoWorth,
                    Total           = data.Total,
                    PaymentMethodId = data.PaymentMethodId,
                    CreationDate    = DateTime.Now
                };

                context.Sales.Add(sale);
                context.SaveChanges();
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(true);
        }
コード例 #7
0
        public async Task <IActionResult> RegisterNewSale([FromBody] SaleDTO sale)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var createSaleCommand = new CreateSaleCommand {
                Model = sale
            };

            int id;

            try
            {
                id = await _mediator.Send(createSaleCommand);
            }
            catch
            {
                _logger.LogInformation($"{sale.Id} {SalesConstants.REGISTER_SALE_CONFLICT}");
                return(Conflict());
            }

            sale.Id = id;

            _logger.LogInformation($"{sale.Id} {SalesConstants.REGISTER_SALE_SUCCESS}");
            return(CreatedAtAction(nameof(RegisterNewSale), sale));
        }
コード例 #8
0
        public bool CreateSale(SaleViewModel saleModel)
        {
            if (saleModel == null)
            {
                return(false);
            }

            SaleDTO sale = Mapper.Map <SaleDTO>(saleModel);

            SaleDTO added = _unitOfWork.Sales.Add(sale);

            if (added != null)
            {
                try
                {
                    _unitOfWork.SaveChanges();
                    var saved = _unitOfWork.Sales.Get(s => s.Customer.Equals(added.Customer) &&
                                                      s.Product.Equals(added.Product) && s.Manager.Equals(added.Manager) &&
                                                      s.Total.Equals(added.Total) && s.SaleDate.Equals(added.SaleDate)).FirstOrDefault();
                    if (saved != null)
                    {
                        saleModel.Id = saved.Id;
                    }
                    return(true);
                }
                catch (Exception e)
                {
                }
            }

            return(false);
        }
コード例 #9
0
ファイル: SaleService.cs プロジェクト: sirhazman07/HRMS
 public SaleDTO ConvertToDTO(Sale sale, Boolean finalised, SalePositionLead emp, CustomerDTO cus = null)
 {
     if (cus == null)
     {
         var leadSpec = new Specification <SaleLead>(l => l.SaleId == sale.Id);
         var cusId    = _repoSaleLead.Find(leadSpec);
         if (cusId != null)
         {
             var cusSpec = new Specification <Customer>(c => c.Id == cusId.CustomerId);
             var cusName = _repoCustomer.Find(cusSpec).Name;
             var record  = new SaleDTO {
                 SaleId = sale.Id, Date = sale.Date, OrderNumber = sale.OrderNumber, CustomerId = cusId.CustomerId, CustomerName = cusName, EmployeeId = emp.EmployeeInSalePosition.Employee.Id, EmployeeName = emp.EmployeeInSalePosition.Employee.Lastname + ", " + emp.EmployeeInSalePosition.Employee.Firstname, Finalised = finalised
             };
             return(record);
         }
         else
         {
             return(new SaleDTO {
                 SaleId = sale.Id, Date = sale.Date, OrderNumber = sale.OrderNumber, EmployeeId = emp.EmployeeInSalePosition.Employee.Id, EmployeeName = emp.EmployeeInSalePosition.Employee.Lastname + ", " + emp.EmployeeInSalePosition.Employee.Firstname, Finalised = emp.FinalisedSale
             });
         }
     }
     else
     {
         return(new SaleDTO {
             SaleId = sale.Id, Date = sale.Date, OrderNumber = sale.OrderNumber, CustomerId = cus.CustomerId, CustomerName = cus.CustomerName, EmployeeId = emp.EmployeeInSalePosition.Employee.Id, EmployeeName = emp.EmployeeInSalePosition.Employee.Lastname + ", " + emp.EmployeeInSalePosition.Employee.Firstname, Finalised = emp.FinalisedSale
         });
     }
 }
コード例 #10
0
        public async Task <IActionResult> UpdateSale([FromBody] SaleDTO sale)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (sale.Id <= 0)
            {
                return(BadRequest(sale.Id));
            }

            var updateSaleCommand = new UpdateSaleCommand {
                Model = sale
            };

            try
            {
                await _mediator.Send(updateSaleCommand);
            }
            catch (Exception)
            {
                _logger.LogWarning($"{sale.Id} {SalesConstants.UPDATE_SALE_CONFLICT}");
                return(Conflict());
            }

            _logger.LogInformation($"{sale.Id} {SalesConstants.UPDATE_SALE_SUCCESS}");
            return(Ok(sale));
        }
コード例 #11
0
        public IHttpActionResult _UpdateSale([FromBody] SaleDTO sale, string field)
        {
            try
            {
                var sale_to_update = db.Sales.SingleOrDefault(a => a.PNR == sale.PNR && a.product_fk == sale.product_fk && a.canceled == false);
                sale_to_update.date_update = DateTime.Now;

                switch (field)
                {
                case "price":
                    sale_to_update.remained_pay = sale.remained_pay;
                    break;

                case "persons":
                    sale_to_update.persons = sale.persons;
                    break;

                case "comments":
                    sale_to_update.comments = sale.comments;
                    break;

                default:
                    break;
                }
                db.SaveChanges();
                return(Ok(sale_to_update));
            }

            catch (Exception ex)
            {
                Exception rootEx = ex.GetBaseException();
                return(Content(HttpStatusCode.BadRequest, rootEx.Message));
            }
        }
コード例 #12
0
        public bool EditSale(int Id, SaleDTO saleEdited)
        {
            Sale sale = _db.Sales.FindById(Id);

            if (sale != null)
            {
                sale.Date = saleEdited.Date;
                if (saleEdited.Client != null)
                {
                    sale.Client = saleEdited.Client;
                }
                if (saleEdited.Product != null)
                {
                    sale.Product = saleEdited.Product;
                }
                if (saleEdited.Price != 0)
                {
                    sale.Price = saleEdited.Price;
                }
                if (saleEdited.ManagerId != 0)
                {
                    sale.Manager = _db.Managers.FindById(saleEdited.ManagerId);
                }
                _db.Sales.Update(sale);
                _db.Save();
                return(true);
            }
            else
            {
                return(false);
            }
        }
コード例 #13
0
        public async Task Handler_ShouldAddSale()
        {
            // Arrange
            var sale = new SaleDTO
            {
                Id     = 5,
                Date   = new DateTime(2020, 03, 01),
                Amount = 1000,
            };

            var command = new CreateSaleCommand {
                Model = sale
            };

            // Act
            var handler = new CreateSaleCommand.CreateSaleCommandHandler(Context, Mapper);
            await handler.Handle(command, CancellationToken.None);

            var entity = Context.Sales.Find(sale.Id);

            // Assert
            entity.ShouldNotBeNull();

            entity.Id.ShouldBe(command.Model.Id);
            entity.Date.ShouldBe(command.Model.Date);
            entity.Amount.ShouldBe(command.Model.Amount);
        }
コード例 #14
0
        public async Task <IActionResult> Insert(SaleInsertViewModel viewmodel)
        {
            var configuration = new MapperConfiguration(cfg =>
            {
                cfg.CreateMap <SaleInsertViewModel, SaleDTO>();
            });
            IMapper mapper = configuration.CreateMapper();
            // new SERService().GetSERByID(4);
            //Transforma o ClienteInsertViewModel em um ClienteDTO
            SaleDTO dto = mapper.Map <SaleDTO>(viewmodel);

            SaleService svc = new SaleService();

            try
            {
                await svc.Insert(dto);

                return(RedirectToAction("Index", "Category"));
            }
            catch (Exception ex)
            {
                ViewBag.Erros = ex.Message;
            }
            return(View());
        }
コード例 #15
0
        public void Add(SaleDTO saleDto)
        {
            var createdSale = _mapper.Map <SaleDTO, Sale>(saleDto);

            _unitOfWork.SaleRepository.Create(createdSale);
            _unitOfWork.Save();
        }
コード例 #16
0
        public async Task <Response> Insert(SaleDTO sale)
        {
            Response response = new Response();

            if (sale.ItemsSales.Count <= 0)
            {
                response.Errors.Add("Não há nenhum produto na venda");
            }

            if (response.Errors.Count != 0)
            {
                response.Success = false;
                return(response);
            }

            sale.CalculatePrice();

            try
            {
                await _saleRepository.Insert(sale);

                response.Success = true;
                return(response);
            }
            catch (Exception ex)
            {
                response.Errors.Add("Erro no banco contate o adm");
                response.Success = false;
                File.WriteAllText("Log.txt", ex.Message);
                return(response);
            }
        }
コード例 #17
0
        private async Task FindOutIds(SaleDTO sale)
        {
            if (await Clients.DoesClientExistAsync(sale.Clients).ConfigureAwait(false))
            {
                sale.Clients.ID = await Clients.GetIdAsync(sale.Clients.Name, sale.Clients.Surname)
                                  .ConfigureAwait(false);
            }
            else
            {
                ThrowArgumentException("Client not found");
            }

            if (await Managers.DoesManagerExistAsync(sale.Managers))
            {
                sale.Managers.ID = await Managers.GetIdAsync(sale.Managers.Surname).ConfigureAwait(false);
            }
            else
            {
                ThrowArgumentException("Mfnfger not found");
            }

            if (await Products.DoesProductExistAsync(sale.Products))
            {
                sale.Products.ID = await Products.GetIdAsync(sale.Products.Name).ConfigureAwait(false);
            }
            else
            {
                ThrowArgumentException("Product not found");
            }
        }
コード例 #18
0
        public async Task Handle_GivenValidId_ReturnsSaleDTO()
        {
            // Arrange
            var sale = new SaleDTO
            {
                Id     = 2,
                Date   = new DateTime(2020, 01, 01),
                Amount = 1200,
            };

            var query = new GetSaleQuery {
                Id = 2
            };

            // Act
            var handler = new GetSaleQuery.GetSaleQueryHandler(Context, Mapper);
            var result  = await handler.Handle(query, CancellationToken.None);

            // Assert
            result.ShouldBeOfType <SaleDTO>();
            result.ShouldNotBeNull();

            result.Id.ShouldBe(sale.Id);
            result.Date.ShouldBe(sale.Date);
            result.Amount.ShouldBe(sale.Amount);
        }
コード例 #19
0
        public async Task <IHttpActionResult> Remove(SaleModel sale)
        {
            SaleDTO targetSale = mapper.Map <SaleModel, SaleDTO>(sale);
            await saleService.RemoveSale(targetSale);

            return(Ok(new ResponseSheme(null, "Ok", 200)));
        }
コード例 #20
0
        public TransactionStatusModel AddSale(SaleDTO sale)
        {
            TransactionStatusModel transStatus = new TransactionStatusModel();

            using (SqlConnection con = new SqlConnection(cs))
            {
                try
                {
                    SqlCommand cmd = new SqlCommand("AddSale", con);

                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.Add(new SqlParameter("@transactionId", sale.TransactionId));
                    cmd.Parameters.Add(new SqlParameter("@productId", sale.ProductDto.ProductId));
                    cmd.Parameters.Add(new SqlParameter("@totalPrice", sale.TotalPrice));

                    con.Open();
                    cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    transStatus.ReturnMessage.Add("Add Sale failed");
                    transStatus.ReturnStatus = false;
                    return(transStatus);
                }
            }

            transStatus.ReturnMessage.Add("Sale successfully added");
            transStatus.ReturnStatus = true;
            return(transStatus);
        }
コード例 #21
0
ファイル: SaleService.cs プロジェクト: bonhchi/BE_Test
        public void Update(SaleDTO sale)
        {
            var item = _mapper.Map <SaleDTO, Domain.Entities.Sale>(sale);

            _repository.Update(item);
            _unitOfWork.SaveChanges();
        }
コード例 #22
0
        public void UpdateSale(SaleDTO sale)
        {
            var saleEF = saleRepository.GetBy(sale.IDKM);

            sale.MappingSale(saleEF);
            saleRepository.Update(saleEF);
        }
コード例 #23
0
        public void UpdateSale_WithValidModel_Returns_OkResult()
        {
            // Arrange
            var mediatorMock = new Mock <IMediator>();

            mediatorMock.Setup(mediator => mediator
                               .Send(It.IsAny <UpdateSaleCommand>(), It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(It.IsAny <Unit>()));

            var loggerMock       = new Mock <ILogger <SalesController> >();
            var salesServiceMock = new Mock <ISaleStatisticService>();

            var controller = new SalesController(loggerMock.Object, mediatorMock.Object, salesServiceMock.Object);
            var saleDTO    = new SaleDTO {
                Id = 1
            };

            // Act
            var result = controller.UpdateSale(saleDTO).GetAwaiter().GetResult();

            // Assert
            var okResult = Assert.IsType <OkObjectResult>(result);

            Assert.IsAssignableFrom <SaleDTO>(okResult.Value);
        }
コード例 #24
0
ファイル: SaleService.cs プロジェクト: bonhchi/BE_Test
        public Domain.Entities.Sale Add(SaleDTO sale)
        {
            var item = _mapper.Map <SaleDTO, Domain.Entities.Sale>(sale);

            _repository.Insert(item);
            _unitOfWork.SaveChanges();
            return(item);
        }
コード例 #25
0
 private sale getMapperBySale(SaleDTO data)
 {
     return(new sale
     {
         Id = data.id,
         Code = data.saleCode
     });
 }
コード例 #26
0
 public void AddSale(SaleDTO sale, IMapper mapper)
 {
     if (sale != null)
     {
         _db.Sales.Create(mapper.Map <SaleDTO, Sale>(sale));
         _db.Save();
     }
 }
コード例 #27
0
        public Task ActivateAsync(object parameter)
        {
            _currentSale = (SaleDTO)parameter;

            UpdateDataGrid();

            return(Task.CompletedTask);
        }
コード例 #28
0
 public SaleViewVM(SaleDTO model)
 {
     this.Id          = model.Id;
     this.ProductName = model.ProductName;
     this.Quantity    = model.Quantity;
     this.Price       = model.Price;
     this.Total       = model.Total;
     this.date        = model.date;
 }
コード例 #29
0
        /// <summary>
        /// Method calculates sale total and tax.
        /// </summary>
        /// <param name="sale">Method takes on SaleDTO as an argument.</param>
        /// <returns></returns>
        public SaleDTO FinalizeSale(SaleDTO sale)
        {
            var saleTotal = sale.SaleItems.Aggregate(0m, (current, item) => current + item.SellingPrice);

            saleTotal       = saleTotal + saleTotal * .06m;
            sale.DateOfSale = DateTime.Now;
            sale.Total      = saleTotal;
            return(sale);
        }
コード例 #30
0
 private BundleModel setBundleData(ShippingDTO shippingResult, SaleDTO saleResult, ProductDTO productResult)
 {
     return(new BundleModel
     {
         Status = shippingResult.Status,
         Sale = getMapperBySale(saleResult),
         Product = getMapperByProduct(productResult)
     });
 }