示例#1
0
        public async Task <Response> CrearOpcionSecundaria(int id)
        {
            try
            {
                var opcion = await db.ProductoOpciones.Include(p => p.Opcion).Include(p => p.ProductoOpcionTipoOpciones).FirstAsync(p => p.IdProductoOpciones == id);

                var tipoOpcionesProducto = await db.ProductoTipoOpciones.Where(p => p.IdTipoOpcion != opcion.Opcion.IdTipoOpcion && p.IdProducto == opcion.IdProducto).Include(p => p.TipoOpcion).OrderBy(u => u).ToListAsync();


                var opcionSecundaria = new VistaOpcionSecundaria();
                if (opcion.ProductoOpcionTipoOpciones.Count > 0)
                {
                    opcionSecundaria.IdProductoOpciones             = opcion.ProductoOpcionTipoOpciones.First().IdProductoOpciones;
                    opcionSecundaria.IdProductoTipoOpcionSecundaria = opcion.ProductoOpcionTipoOpciones.First().IdProductoTipoOpcion;
                }
                opcionSecundaria.IdProductoTipoOpcion = opcion.IdProductoTipoOpcion == null ? 0 : (int)opcion.IdProductoTipoOpcion;
                opcionSecundaria.CambiaPrecio         = opcion.CambiaPrecio;
                opcionSecundaria.Precio = opcion.Precio;
                opcionSecundaria.ProductoTipoOpciones = tipoOpcionesProducto;
                opcionSecundaria.MuestraSecundario    = opcion.MuestraSecundario;

                return(new Response {
                    IsSuccess = true, Message = string.Empty, Result = opcionSecundaria
                });
            }
            catch (Exception ex)
            {
                return(new Response {
                    IsSuccess = false, Message = ex.InnerException.Message, Result = new VistaProductos {
                        Categorias = null
                    }
                });
            }
        }
示例#2
0
        public async Task <Response> CrearOpcionSecundaria(VistaOpcionSecundaria vista)
        {
            using (var transacction = db.Database.BeginTransaction())
            {
                try
                {
                    var opcionSecundaria = await db.ProductoOpcionTipoOpciones.Where(po => po.IdProductoOpciones == vista.IdProductoOpciones).ToListAsync();

                    //var opcionCambio = await db.ProductoOpcionTipoOpciones.Where(po => po.IdProductoOpciones == vista.IdProductoTipoOpcion).ToListAsync();
                    var productoOpcion = await db.ProductoOpciones.FindAsync(vista.IdProductoOpciones);


                    if (vista.MuestraSecundario)
                    {
                        if (opcionSecundaria.Count > 0)
                        {
                            opcionSecundaria.First().IdProductoTipoOpcion = vista.IdProductoTipoOpcionSecundaria;
                            db.Update(opcionSecundaria.First());
                        }
                        else
                        {
                            db.Add(new ProductoOpcionTipoOpciones {
                                IdProductoOpciones   = vista.IdProductoOpciones,
                                IdProductoTipoOpcion = vista.IdProductoTipoOpcionSecundaria
                            });
                        }
                    }
                    else
                    {
                        if (opcionSecundaria != null && opcionSecundaria.Count > 0)
                        {
                            db.Remove(opcionSecundaria.First());
                        }
                    }


                    if (vista.CambiaPrecio)
                    {
                        productoOpcion.IdProductoTipoOpcion = vista.IdProductoTipoOpcion;
                        productoOpcion.Precio = vista.Precio;
                    }
                    else
                    {
                        productoOpcion.IdProductoTipoOpcion = null;
                        productoOpcion.Precio = 0;
                    }

                    productoOpcion.CambiaPrecio      = vista.CambiaPrecio;
                    productoOpcion.MuestraSecundario = vista.MuestraSecundario;
                    db.Update(productoOpcion);
                    await db.SaveChangesAsync();

                    transacction.Commit();
                    return(new Response {
                        IsSuccess = true, Message = "Agregada correctamente", Result = productoOpcion
                    });
                }
                catch (Exception ex)
                {
                    transacction.Rollback();
                    return(new Response {
                        IsSuccess = false, Message = ex.Message, Result = null
                    });
                }
            }
        }