public IActionResult ProductoPropiedadPorTipo(int idproducto, int idproductotipo) { try { List <ProductoPropiedad> productoPropiedades = ProductoPropiedadDAO.getProductoPropiedadesPorTipo(idproductotipo); List <Dictionary <String, Object> > campos = new List <Dictionary <String, Object> >(); foreach (ProductoPropiedad productoPropiedad in productoPropiedades) { Dictionary <String, Object> campo = new Dictionary <String, Object>(); campo.Add("id", productoPropiedad.id); campo.Add("nombre", productoPropiedad.nombre); campo.Add("tipo", productoPropiedad.datoTipoid); ProductoPropiedadValor productoPropiedadValor = ProductoPropiedadValorDAO.getValorPorProductoYPropiedad(productoPropiedad.id, idproducto); if (productoPropiedadValor != null) { switch (productoPropiedad.datoTipoid) { case 1: campo.Add("valor", productoPropiedadValor.valorString); break; case 2: campo.Add("valor", productoPropiedadValor.valorEntero); break; case 3: campo.Add("valor", productoPropiedadValor.valorDecimal); break; case 4: campo.Add("valor", productoPropiedadValor.valorEntero == 1 ? true : false); break; case 5: campo.Add("valor", productoPropiedadValor.valorTiempo != null ? productoPropiedadValor.valorTiempo.Value.ToString("dd/MM/yyyy H:mm:ss") : null); break; } } else { campo.Add("valor", ""); } campos.Add(campo); } List <object> estructuraCamposDinamicos = CFormaDinamica.convertirEstructura(campos); return(Ok(new { success = true, productopropiedades = estructuraCamposDinamicos })); } catch (Exception e) { CLogger.write("6", "ProductoPropiedadController.class", e); return(BadRequest(500)); } }
public IActionResult Producto(int id, [FromBody] dynamic value) { try { ProductoValidator validator = new ProductoValidator(); ValidationResult results = validator.Validate(value); if (results.IsValid) { bool ret = false; Producto producto = ProductoDAO.getProductoPorId(id); producto.nombre = value.nombre; producto.descripcion = value.descripcion; producto.componenteid = value.componenteid; producto.subcomponenteid = value.subcomponenteid; producto.productoTipoid = value.productoTipoid; producto.ueunidadEjecutora = value.ueunidadEjecutora; producto.entidad = value.entidad; producto.ejercicio = value.ejercicio; producto.snip = value.snip; producto.programa = value.programa; producto.subprograma = value.subprograma; producto.proyecto = value.proyecto; producto.obra = value.obra; producto.renglon = value.renglon; producto.ubicacionGeografica = value.ubicacionGeografica; producto.actividad = value.actividad; producto.latitud = value.latitud; producto.longitud = value.longitud; producto.peso = value.peso; producto.costo = value.costo; producto.acumulacionCostoid = value.acumulacionCostoid; producto.fechaInicio = value.fechaInicio; DateTime fechaFin; DateTime.TryParse((string)value.fechaFin, out fechaFin); producto.fechaFin = fechaFin; DateTime fechaInicioReal; DateTime.TryParse((string)value.fechaInicioReal, out fechaInicioReal); producto.fechaInicioReal = fechaInicioReal; DateTime fechaFinReal; DateTime.TryParse((string)value.fechaFinReal, out fechaFinReal); producto.fechaFinReal = fechaFinReal; producto.duracion = value.duracion; producto.duracionDimension = value.duracionDimension; producto.inversionNueva = value.inversionNueva; producto.acumulacionCostoid = value.acumulacionCostoid; producto.usuarioActualizo = User.Identity.Name; producto.fechaActualizacion = DateTime.Now; ret = ProductoDAO.guardarProducto(producto, true); if (ret) { String pagosPlanificados = value.pagosPlanificados; if (!producto.acumulacionCostoid.Equals(2) || pagosPlanificados != null && pagosPlanificados.Length > 0) { List <PagoPlanificado> pagosActuales = PagoPlanificadoDAO.getPagosPlanificadosPorObjeto(producto.id, 3); foreach (PagoPlanificado pagoTemp in pagosActuales) { PagoPlanificadoDAO.eliminarTotalPagoPlanificado(pagoTemp); } } if (producto.acumulacionCostoid.Equals(2) && pagosPlanificados != null && pagosPlanificados.Length > 0) { JArray pagosArreglo = JArray.Parse((string)value.pagosPlanificados); for (int i = 0; i < pagosArreglo.Count; i++) { JObject objeto = (JObject)pagosArreglo[i]; DateTime fechaPago = objeto["fechaPago"] != null?Convert.ToDateTime(objeto["fechaPago"].ToString()) : default(DateTime); decimal monto = objeto["pago"] != null?Convert.ToDecimal(objeto["pago"].ToString()) : default(decimal); PagoPlanificado pagoPlanificado = new PagoPlanificado(); pagoPlanificado.fechaPago = fechaPago; pagoPlanificado.pago = monto; pagoPlanificado.objetoId = producto.id; pagoPlanificado.objetoTipo = 3; pagoPlanificado.usuarioCreo = User.Identity.Name; pagoPlanificado.fechaCreacion = DateTime.Now; pagoPlanificado.estado = 1; ret = ret && PagoPlanificadoDAO.Guardar(pagoPlanificado); } } } if (ret) { List <ProductoPropiedad> productoPropiedades = ProductoPropiedadDAO.getProductoPropiedadesPorTipo(producto.productoTipoid); foreach (ProductoPropiedad productoPropiedad in productoPropiedades) { ProductoPropiedadValor productoPropVal = ProductoPropiedadValorDAO.getValorPorProdcutoYPropiedad(productoPropiedad.id, producto.id); if (productoPropVal != null) { ret = ret && ProductoPropiedadValorDAO.eliminarProductoPropiedadValor(productoPropVal.productoPropiedadid, productoPropVal.productoid); } } JArray datosDinamicos = JArray.Parse((string)value.camposDinamicos); for (int i = 0; i < datosDinamicos.Count; i++) { JObject data = (JObject)datosDinamicos[i]; if (data["valor"] != null && data["valor"].ToString().Length > 0 && data["valor"].ToString().CompareTo("null") != 0) { ProductoPropiedad productoPropiedad = ProductoPropiedadDAO.getProductoPropiedad(Convert.ToInt32(data["id"])); ProductoPropiedadValor valor = new ProductoPropiedadValor(); valor.productos = producto; valor.productoid = producto.id; valor.productoPropiedads = productoPropiedad; valor.productoPropiedadid = productoPropiedad.id; valor.usuarioCreo = User.Identity.Name; valor.fechaCreacion = DateTime.Now; switch (productoPropiedad.datoTipoid) { case 1: valor.valorString = data["valor"].ToString(); break; case 2: valor.valorEntero = Convert.ToInt32(data["valor"].ToString()); break; case 3: valor.valorDecimal = Convert.ToDecimal(data["valor"].ToString()); break; case 4: valor.valorEntero = data["valor"].ToString() == "true" ? 1 : 0; break; case 5: valor.valorTiempo = Convert.ToDateTime(data["valor_f"].ToString()); break; } ret = (ret && ProductoPropiedadValorDAO.guardarProductoPropiedadValor(valor)); } } } return(Ok(new { success = ret, id = producto.id, usuarioCreo = producto.usuarioCreo, usuarioActualizo = producto.usuarioActualizo, fechaCreacion = producto.fechaCreacion.ToString("dd/MM/yyyy H:mm:ss"), fechaActualizacion = producto.fechaActualizacion != null ? producto.fechaActualizacion.Value.ToString("dd/MM/yyyy H:mm:ss") : null })); } else { return(Ok(new { success = false })); } } catch (Exception e) { CLogger.write("3", "ProductoController.class", e); return(BadRequest(500)); } }