public OrderStatus GetOrderStatus(int id) { var orderStatus = orderStatusesRepository.GetById(id); return(orderStatus); }
public OrderStatus GetOrderStatus(long id) { return(_repository.GetById(id)); }
public async Task <RescueResponseDto <Order> > DoRescue(RescueRequestDto rescueRequestDto) { var user = await _userRepository.CustomFind(x => x.Cpf.Equals(rescueRequestDto.Cpf) && (x.UserStatus.Id == (int)UserStatusEnum.Active || x.UserStatus.Id == (int)UserStatusEnum.OnlyCatalog)); _logger.Info($"resgate para login {rescueRequestDto.Cpf} com codigo externo {rescueRequestDto.ExternalOrderId} - iniciada"); if (!user.Any()) { _logger.Info($"resgate para login {rescueRequestDto.Cpf} com codigo externo {rescueRequestDto.ExternalOrderId} - usuario invalido"); return(new RescueResponseDto <Order> { Success = false, Message = "usuario invalido" }); } var lastRescue = await _orderRepository.GetLast(x => x.User.Cpf.Equals(rescueRequestDto.Cpf), x => x.Id); if (lastRescue != null && (DateTime.Now - lastRescue.CreatedAt).TotalMinutes < 2) { _logger.Fatal($"resgate para login {rescueRequestDto.Cpf} com codigo externo {rescueRequestDto.ExternalOrderId} - suspeita de fraude por tentativa de gerar pedidos em um pequeno intervalo de tempo"); return(new RescueResponseDto <Order> { Success = false, Message = "suspeita de fraude por tentativa de gerar pedidos em um pequeno intervalo de tempo" }); } if (!rescueRequestDto.RescueRequestItems.Any()) { _logger.Info($"resgate para login {rescueRequestDto.Cpf} com codigo externo {rescueRequestDto.ExternalOrderId} - pedido não possue itens"); return(new RescueResponseDto <Order> { Success = false, Message = "pedido não possue itens" }); } var balance = (await _userPunctuationRepository.CustomFind(x => x.User.Id == user.First().Id)).Sum(x => x.Punctuation); var order = new Order(); if (balance < rescueRequestDto.Total) { _logger.Info($"autorizacao de pedido para login {rescueRequestDto.Cpf} com codigo externo {rescueRequestDto.ExternalOrderId} - autorizacao recusada saldo insuficiente"); return(new RescueResponseDto <Order> { Success = false, Message = "Saldo insuficiente" }); } order = new Order { Activated = true, ConversionRate = rescueRequestDto.ConversionRate, CreatedAt = DateTime.Now, ExternalOrderId = rescueRequestDto.ExternalOrderId, Freight = rescueRequestDto.Freight, Login = rescueRequestDto.Cpf, ForecastDate = rescueRequestDto.ForecastDate, OrderStatus = await _orderStatusRepository.GetById((int)OrderStatusEnum.Confirmed), OrderValue = rescueRequestDto.OrderValue, Total = rescueRequestDto.Total, User = user.First() }; _orderRepository.Save(order); await _unitOfWork.CommitAsync(); _userPunctuationRepository.Save(new UserPunctuation { CreatedAt = DateTime.Now, CurrentMonth = DateTime.Now.Month, CurrentYear = DateTime.Now.Year, Description = "Pedido Confirmado", OperationType = 'D', Punctuation = -1 * rescueRequestDto.Total, ReferenceEntityId = order.Id, UserPunctuationSource = await _userPunctuationSourceRepository.GetById((int)SourceUserPunctuationEnum.OrderConfirmed), User = user.First() }); foreach (var item in rescueRequestDto.RescueRequestItems) { _orderItemRepository.Save(new OrderItem { Activated = true, Ammout = item.Ammout, Category = item.Category, CodeItem = item.CodeItem, CreatedAt = DateTime.Now, Department = item.Department, ExternalOrderId = rescueRequestDto.ExternalOrderId, Order = order, Partner = item.Partner, ProductName = item.ProductName, TotalValue = item.TotalValue, UnitValue = item.UnitValue }); } var confirmSaved = await _unitOfWork.CommitAsync(); if (confirmSaved) { order.User = null; _logger.Info($"autorizacao de pedido para login {rescueRequestDto.Cpf} com codigo externo {rescueRequestDto.ExternalOrderId} - Pedido gerado com sucesso!"); return(new RescueResponseDto <Order> { Success = true, Message = "Pedido gerado com sucesso!", Data = new List <Order> { order } }); } else { _logger.Info($"autorizacao de pedido para login {rescueRequestDto.Cpf} com codigo externo {rescueRequestDto.ExternalOrderId} - autorizacao recusada ocorreu erro ao tentar gerar o pedido"); return(new RescueResponseDto <Order> { Success = false, Message = "ocorreu erro ao tentar gerar o pedido" }); } }
public OrderStatus GetById(int id) { return(db.GetById(id)); }