Beispiel #1
0
        public async Task <IActionResult> Put(Guid salesId, [FromBody] SaleUpdateClientModel saleUpdateDto)
        {
            var result = await _saleService.UpdateSale(salesId, saleUpdateDto);

            if (result.IsError)
            {
                return(BadRequest(result));
            }
            return(Ok(result));
        }
Beispiel #2
0
        public async Task <Result> UpdateSale(Guid saleId, SaleUpdateClientModel saleUpdateDto)
        {
            var result       = new Result();
            var existedSales = await _saleRepository.FindAsync(x => x.Id == saleId);

            var existedSale = existedSales.FirstOrDefault();

            if (saleUpdateDto.TotalCost != null)
            {
                var validSaleUpdateSpec = ValidSaleSpecification.Create(saleId, saleUpdateDto.TotalCost.Value);
                existedSales = await _saleRepository.FindAsync(validSaleUpdateSpec.ToExpression());

                existedSale = existedSales.FirstOrDefault();
            }

            if (existedSale != null && !result.IsError)
            {
                existedSale.UpdateDate = saleUpdateDto.UpdateDate;
                existedSale.TotalCost  = saleUpdateDto.TotalCost ?? existedSale.TotalCost;
                existedSale.IsActive   = saleUpdateDto.IsActive;
                // udpate
                await _saleRepository.UpdateAsync(saleId, existedSale);

                await _saleRepository.CompleteAsync();

                // event
                await SaleUdpateEvent(existedSale);
            }
            else
            {
                result.IsError   = true;
                result.Message   = "You cannot reduce cost from the original value or Sale does not exist";
                result.StatuCode = 400;
            }

            return(result);
        }