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 } }); } }
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 }); } } }