public CompraResponse Add(CompraRequest request) { if (ExisteFactura(request.NumeroFactura)) { return(new CompraResponse($"La factura {request.NumeroFactura} ya está registrada")); } CompraBuilder compraBuilder = new CompraBuilder(request.NumeroFactura); foreach (var item in request.Detalles) { Producto producto = _unitOfWork.ProductoRepository.FindFirstOrDefault(x => x.Codigo == item.CodigoProducto); compraBuilder = compraBuilder.AgregarDetalle(producto, item.Cantidad, item.PrecioCompra); } if (compraBuilder.IsOk().Any()) { return(new CompraResponse(string.Join(',', compraBuilder.IsOk()))); } Compra compra = compraBuilder.Build(request.Pagado, request.Impuesto); if (_unitOfWork.Commit() > 0) { return(new CompraResponse ( mensaje: "Compra registrada correctamente", entidad: compra )); } return(new CompraResponse("No se pudo registrar la compra")); }
public async Task <IActionResult> Post([FromBody] CompraRequest comprasRequest) { if (!ModelState.IsValid) { return(BadRequest(ModelState.GetErrorMessages())); } var db = new ApplicationContext(); // TODO ver https://www.freecodecamp.org/news/an-awesome-guide-on-how-to-build-restful-apis-with-asp-net-core-87b818123e28/ // Aprender a usar a injeção de deéndências e o AutoMapper para melhorar o código no geral Compra compra = new Compra(); compra.Nome = comprasRequest.Nome; compra.Concluido = comprasRequest.Concluido; compra.Observacao = comprasRequest.Observacao; try { // testar o add com a cópia de valores //db.Entry(compra).CurrentValues.SetValues(comprasRequest); await db.Compras.AddAsync(compra); db.SaveChanges(); } catch (Exception ex) { return(BadRequest(ex.Message)); } // TODO - criar um objeto de resposta return(Ok("Objeto criado")); }
public Response HacerCompraService(CompraRequest request) { TerceroProveedor proveedor = this._unitOfWork.TerceroProvedorRepository. FindBy(provedor => provedor.Tercero.Nit == request.NitProveedor, includeProperties: "Tercero").FirstOrDefault(); if (proveedor == null) { return(new Response { Mensaje = $"El provedor con identificación {request.NitProveedor}" + $" no fue encontrado en el sistema, agréguelo antes" }); } TerceroUsuario usuario = this._unitOfWork.TerceroUsuarioRepository. FindFirstOrDefault(usuario => usuario.Id == request.UsuarioId); if (usuario == null) { return(new Response { Mensaje = $"El usuario con id {request.UsuarioId}" + $" no fue encontrado en el sistema, agréguelo antes" }); } var errores = PuedeRegistrarDetalles(request.Detalles); if (errores.Any()) { return(new Response { Mensaje = string.Join(", ", errores) }); } Compra compra = new Compra.CompraBuilder(proveedor, usuario).Build(); request.Detalles.ForEach((detalle) => { Producto producto = this._unitOfWork.ProductoRepository. FindBy(producto => producto.Id == detalle.ProductoId, includeProperties: "DetallesCompra.Compra").FirstOrDefault(); CompraDetalle compraDetalle = new CompraDetalle.CompraDetalleBuilder(producto, compra). SetCantidad(detalle.Cantidad).SetCostoUnitario(detalle.Valor).Build(); compra.AddDetalle(compraDetalle); producto.AddCompraDetalle(compraDetalle); }); this._unitOfWork.CompraRepository.Add(compra); this._unitOfWork.TransaccionRepository.Add(new Transaccion(TipoDeTransaccion.Egreso, Concepto.CompraDeMateriasPrimas, compra.Total)); this._unitOfWork.Commit(); return(new Response { Mensaje = "Compra registrada con éxito", Data = new CompraRequest().Map(compra) }); }
public async Task <IActionResult> Realizar([FromBody] CompraRequest compraRequest) { var result = await _compraService.Efetivar(compraRequest); return(new ObjectResult(result) { StatusCode = StatusCodes.Status200OK }); }
public ActionResult add(CompraRequest request) { try { using (var transaccion = _context.Database.BeginTransaction()) { try { var compra = new Compras(); compra.Total = request.detalleRequests.Sum(item => item.Cantidad * item.PrecioUnitario); compra.Fecha = DateTime.Now; compra.IdEstado = request.IdEstado; _context.Compras.Add(compra); _context.SaveChanges(); foreach (var compradetalle in request.detalleRequests) { var producto = _context.Producto.FindAsync(compradetalle.IdProducto); if (producto.Result.IdProducto > 0) { var detalle = new Modelo.DetalleCompra(); detalle.Cantidad = compradetalle.Cantidad; detalle.IdProducto = compradetalle.IdProducto; detalle.CostoUnitario = producto.Result.Costo; detalle.PrecioUnitario = compradetalle.PrecioUnitario; detalle.IdCompra = compradetalle.IdCompra; Modelo.Producto product = new Modelo.Producto { Existencia = producto.Result.Existencia + detalle.Cantidad, }; // actualizarProducto(producto.Result.IdProducto, product); _context.DetalleCompra.Add(detalle); _context.SaveChanges(); } } transaccion.Commit(); } catch (Exception ex) { transaccion.Rollback(); } } } catch (Exception ex) { return(null); } return(Ok()); }
public ActionResult <Response> HacerCompra(CompraRequest request) { Response response = new CompraService(_unitOfWork).HacerCompraService(request); if (response.Data == null) { return(BadRequest(response.Mensaje)); } return(Ok(response)); }
public async Task <IActionResult> RecibirPedido([FromBody] CompraRequest request) { if (string.IsNullOrEmpty(request.NombreProveedor)) { return(BadRequest("Debe enviar el nombre de Articulo")); } await topicHelper.SendMessage(request); return(Ok("Datos Enviados correctamente")); }
private bool ValidaCompraUpdate(CompraRequest compraRequest) { var CompraExistente = _comprasRepository.Get(compraRequest.Cod_compra); if (_baseValida.ValidaCampoNull(compraRequest.titulo, compraRequest.descricao) || CompraExistente == null) { return(true); } return(false); }
public async Task SendMessage(CompraRequest payload) { //serializarlo a JSON string data = JsonConvert.SerializeObject(payload); Message message = new Message(Encoding.UTF8.GetBytes(data)); try { await topicClient.SendAsync(message); } catch (Exception ex) { logger.LogError(ex.Message); } }
/// <summary> /// A partir de la petición de compra, se devuelve la respuesta /// actualizando la cantidad tontal de entradas y calculando el precio de /// las entradas compradas /// </summary> /// <param name="request"></param> /// <returns></returns> public CompraResponse GetResponse(CompraRequest request) { Festival festivalCompra; if (FestivalesVacio()) { CargarFestivales(); } festivalCompra = GetFestivalPorNombre(request.Festival); foreach (var festival in festivales) { if (festival.Nombre == festivalCompra.Nombre) { festival.Cantidad = (festivalCompra.Cantidad - request.Entradas); } } response.CosteTotal = (festivalCompra.Precio * request.Entradas); return(response); }
public ActionResult <CompraRequest> Put([FromBody] CompraRequest compraRequest) { var NewCompra = _comprasRepository.Get(compraRequest.Cod_compra); try { if (!ValidaCompraUpdate(compraRequest)) { NewCompra.titulo = compraRequest.titulo.Trim(' '); NewCompra.descricao = compraRequest.descricao.Trim(' '); var Compra = _comprasRepository.Update(NewCompra); return(new OkObjectResult(compraRequest)); } else { return(new BadRequestObjectResult("Erro Update")); } } catch (Exception e) { return(new BadRequestObjectResult(e)); } }
public CompraResponse Post([FromBody] CompraRequest request) { return(fr.GetResponse(request)); }
public ActionResult <CompraResponse> Nueva(CompraRequest request) { var response = _service.Add(request); return(response); }
public async Task <object> Efetivar(CompraRequest compraRequest) { return(await _fornecedorRepository.ObterInformacoes(compraRequest.Endereco.Estado)); }