public ProductoJoinProductoConDetallesJoinDetalleProductoViewModel BuscarProductoXCodigoBarras(string codigoBarrasBuscado, int idUsuarioOperador) { ProductoJoinProductoConDetallesJoinDetalleProductoViewModel productoJoinProductoConDetallesJoinDetalleProductoViewModel = new ProductoJoinProductoConDetallesJoinDetalleProductoViewModel(); using (var ctx = new palominoEntities()) { using (var dbContextTransaction = ctx.Database.BeginTransaction(IsolationLevel.Serializable)) { try { //Obtengo info de los productos del usuario operador var listaIds_CodBarras_EstadoProductos = (from s in ctx.Producto where s.IdUsuarioAlta == idUsuarioOperador select new { s.Id, s.CodigoBarras, s.Activo }).ToList(); //Obtengo el unico elemento donde esta el codigoBarras buscado var producto = listaIds_CodBarras_EstadoProductos.SingleOrDefault(item => item.CodigoBarras.Equals(codigoBarrasBuscado)); //Busco el Id de usuario que necesitare, y ver que este activo var resumenUsuarios = (from x in ctx.Usuario select new { x.Id, x.Usuario1, x.Activo }).ToList(); var usuarioActivoBuscado = resumenUsuarios.SingleOrDefault(item => (item.Id == idUsuarioOperador) && (item.Activo == true)); if ((producto != null) && (usuarioActivoBuscado != null)) { var relacion = (from prodConDetalles in ctx.ProductoConDetalles where producto.Id == prodConDetalles.IdProducto select new { producto.Id, producto.CodigoBarras, prodConDetalles.IdDetalleProducto }).ToList(); //Debe de regresarse una lista con solo un elemento var productoConDetalles = (from r in relacion join d in ctx.DetalleProducto on r.IdDetalleProducto equals d.Id where d.Activo == true select new { r.Id, r.CodigoBarras, r.IdDetalleProducto, d.Nombre }).ToList(); var unicoElemento = productoConDetalles.Single(); //armo la respuesta final productoJoinProductoConDetallesJoinDetalleProductoViewModel.Producto_Id = unicoElemento.Id; productoJoinProductoConDetallesJoinDetalleProductoViewModel.Producto_CodigoBarras = unicoElemento.CodigoBarras; productoJoinProductoConDetallesJoinDetalleProductoViewModel.DetalleProducto_Id = unicoElemento.IdDetalleProducto; productoJoinProductoConDetallesJoinDetalleProductoViewModel.DetalleProducto_Nombre = unicoElemento.Nombre; } dbContextTransaction.Commit(); } catch (Exception ex) { dbContextTransaction.Rollback(); throw new Exception("Excepcion cachada y lanzada en ProductoLN.BuscarProductoXCodigoBarras", ex); } } } return(productoJoinProductoConDetallesJoinDetalleProductoViewModel); }
public IHttpActionResult ProductoActualizar(ProductoJoinProductoConDetallesJoinDetalleProductoViewModel pJoinViewModel) { if (ModelState.IsValid) { RelojServidor relojServidor = new RelojServidor(); relojServidor.ColocarMismaFechaHoraEnCamposFechaAltaYFechaModificacion(pJoinViewModel); ProductoLN productoLN = new ProductoLN(); string res = productoLN.Modificar(pJoinViewModel); if (res.Contains("ok")) { return(Ok()); } else { return(BadRequest(res)); } } return(BadRequest("ProductoAPIController.ProductoActualizar no pudo recibir el parametro productoViewModel")); }
public IHttpActionResult BuscarProductoxCodigoBarras(string codigoBarrasBuscado, int idUsuarioOperador) { if (ModelState.IsValid) { ProductoLN productoLN = new ProductoLN(); ProductoJoinProductoConDetallesJoinDetalleProductoViewModel pJoin = productoLN.BuscarProductoXCodigoBarras(codigoBarrasBuscado, idUsuarioOperador); if (pJoin.Producto_Id != 0) { return(Ok(pJoin)); } else { return(BadRequest("No se encontro codigo de barras")); } } else { return(BadRequest("ProductoAPIController.BuscarProductoXCodigoBarras no pudo recibir el parametro codigoBarrasBuscado")); } }
public JsonResult ModificarProducto(ProductoJoinProductoConDetallesJoinDetalleProductoViewModel pJoinViewModel) { string respuesta = ""; UsuarioViewModel usuarioViewModel = LLamarApiBuscarUsuarioXUsuario(User.Identity.Name); pJoinViewModel.DetalleProducto_IdUsuarioAlta = usuarioViewModel.Id; pJoinViewModel.DetalleProducto_IdUsuarioModifico = usuarioViewModel.Id; if (ModelState.IsValid) { using (var client = new HttpClient()) { client.BaseAddress = new Uri("http://localhost:51339/"); //HTTP PUT var putTask = client.PutAsJsonAsync <ProductoJoinProductoConDetallesJoinDetalleProductoViewModel>("api/ProductoAPI/ProductoActualizar", pJoinViewModel); putTask.Wait(); var result = putTask.Result; if (result.IsSuccessStatusCode) { respuesta = "ok"; } else { var x = result.Content.ReadAsStringAsync(); x.Wait(); // x.Result tiene el resultado respuesta = x.Result; } } } else { respuesta = "No se pudo enlazar los datos para actualizar"; } return(Json(respuesta, JsonRequestBehavior.AllowGet)); }
public JsonResult BuscarProductoxCodigoBarras(string codigoBarrasBuscado) { ProductoJoinProductoConDetallesJoinDetalleProductoViewModel respuesta = new ProductoJoinProductoConDetallesJoinDetalleProductoViewModel(); UsuarioViewModel usuarioViewModel = LLamarApiBuscarUsuarioXUsuario(User.Identity.Name); if (ModelState.IsValid) { if (usuarioViewModel != null) { using (var cliente = new HttpClient()) { cliente.BaseAddress = new Uri("http://localhost:51339/"); var responseTask = cliente.GetAsync("api/ProductoAPI/BuscarProductoxCodigoBarras?codigoBarrasBuscado=" + codigoBarrasBuscado + "&idUsuarioOperador=" + usuarioViewModel.Id.ToString()); responseTask.Wait(); var result = responseTask.Result; if (result.IsSuccessStatusCode) { var readTask = result.Content.ReadAsAsync <ProductoJoinProductoConDetallesJoinDetalleProductoViewModel>(); readTask.Wait(); respuesta = readTask.Result; } else //web api sent error response { var x = result.Content.ReadAsStringAsync(); x.Wait(); //x.Result tiene el resultado ModelState.AddModelError(string.Empty, x.Result); } } } } Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.Cache.SetNoStore(); return(Json(respuesta, JsonRequestBehavior.AllowGet)); }
public string Modificar(ProductoJoinProductoConDetallesJoinDetalleProductoViewModel productoConNuevosValores) { string res = "false"; using (var ctx = new palominoEntities()) { using (var dbContextTransaction = ctx.Database.BeginTransaction(IsolationLevel.Serializable)) { try { //Verifico que el Producto este activo var listaIdsYEstado = (from s in ctx.Producto select new { s.Id, s.Activo }).ToList(); var listaIdsActivos = (from item in listaIdsYEstado where item.Activo == true select item.Id).ToList(); int idBuscado = listaIdsActivos.Find(id => id == productoConNuevosValores.Producto_Id); //Verifico que el DetalleProducto este activo var listaIdsDetalleProducto = (from x in ctx.DetalleProducto select new { x.Id, x.Activo }).ToList(); var listaIdsDetalleProductoActivos = (from x in listaIdsDetalleProducto where x.Activo == true select x.Id).ToList(); var otroIdBuscado = listaIdsDetalleProductoActivos.Find(item => item == productoConNuevosValores.DetalleProducto_Id); //Busco el Id de usuario que necesitare, y ver que este activo var resumenUsuarios = (from x in ctx.Usuario select new { x.Id, x.Usuario1, x.Activo }).ToList(); var usuarioActivoBuscado = resumenUsuarios.SingleOrDefault(item => (item.Id == productoConNuevosValores.DetalleProducto_IdUsuarioAlta) && (item.Activo == true)); if ((idBuscado > 0) && (otroIdBuscado > 0) && (usuarioActivoBuscado != null)) // Aqui se comprueba lo anterior { var resumenProductoConDetalles = (from s in ctx.ProductoConDetalles where s.IdProducto == productoConNuevosValores.Producto_Id select new { s.IdDetalleProducto }).ToList(); var resumenDetalleProducto = (from c in ctx.DetalleProducto select new { c.Id, c.Activo }).ToList(); var fila = (from a in resumenProductoConDetalles join b in resumenDetalleProducto on a.IdDetalleProducto equals b.Id where b.Activo == true select b.Id).ToList(); var elementoUnico = fila.Single(); DetalleProducto detalleProducto = ctx.DetalleProducto.Find(elementoUnico); detalleProducto.Activo = false; detalleProducto.IdUsuarioModifico = productoConNuevosValores.DetalleProducto_IdUsuarioModifico; detalleProducto.FechaModificacion = productoConNuevosValores.DetalleProducto_FechaModificacion; //crear nuevo var resumenIdsEnDetalleProducto = (from s in resumenDetalleProducto select s.Id).ToList(); int idNuevoParaDetalleProducto = resumenIdsEnDetalleProducto.Max() + 1; DetalleProducto nuevoDetalleProducto = new DetalleProducto(); nuevoDetalleProducto.Id = idNuevoParaDetalleProducto; nuevoDetalleProducto.Nombre = productoConNuevosValores.DetalleProducto_Nombre; nuevoDetalleProducto.Activo = true; nuevoDetalleProducto.IdUsuarioAlta = productoConNuevosValores.DetalleProducto_IdUsuarioAlta; nuevoDetalleProducto.IdUsuarioModifico = productoConNuevosValores.DetalleProducto_IdUsuarioModifico; nuevoDetalleProducto.FechaAlta = productoConNuevosValores.DetalleProducto_FechaAlta; nuevoDetalleProducto.FechaModificacion = productoConNuevosValores.DetalleProducto_FechaModificacion; ctx.DetalleProducto.Add(nuevoDetalleProducto); ProductoConDetalles productoConDetalles = new ProductoConDetalles(); productoConDetalles.IdProducto = productoConNuevosValores.Producto_Id; productoConDetalles.IdDetalleProducto = idNuevoParaDetalleProducto; productoConDetalles.Activo = true; productoConDetalles.IdUsuarioAlta = productoConNuevosValores.DetalleProducto_IdUsuarioAlta; productoConDetalles.IdUsuarioModifico = productoConNuevosValores.DetalleProducto_IdUsuarioModifico; productoConDetalles.FechaAlta = productoConNuevosValores.DetalleProducto_FechaAlta; productoConDetalles.FechaModificacion = productoConNuevosValores.DetalleProducto_FechaModificacion; ctx.ProductoConDetalles.Add(productoConDetalles); ctx.SaveChanges(); res = "ok"; } else { res = "No esta disponible el producto a modificar"; } dbContextTransaction.Commit(); } catch (Exception ex) { dbContextTransaction.Rollback(); throw new Exception("Excepcion cachada y lanzada en ProductoLN.Modificar", ex); } } } return(res); }