示例#1
0
        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));
        }
示例#6
0
        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);
        }