public ActionResult CrearProducto(ProductoModel unProducto) { //YA controlamos que el usuario este logueado en el GET //Si el modelo no es valido retornamos la vista con los errores if (!ModelState.IsValid) { //Retornamos el modelo con sus errores return(View(unProducto)); } else //Si el modelo ES VALIDO { //Nos anticipamos a un posible error en DB try { //Buscamos el producto por su ID, si hay alguno con la misma id mostramos error ProductoDTO buscando = miLogica.BuscarProducto(unProducto.Id); if (buscando == null) { //Creamos un ProductoDTO para pasarlo a la logica ProductoDTO nuevoProducto = new ProductoDTO() { Id = unProducto.Id, Marca = unProducto.Marca, //Ya controlamos que la session no sea nula entonces: NickUsuario = HerramientasM.IdLogueado((UsuarioModel)Session["Logueado"]), Nombre = unProducto.Nombre, Precio = unProducto.Precio, Habilitado = true }; //Enviamos el producto a la logica miLogica.CrearProducto(nuevoProducto); //Redirigimos al Action para que se reseteen los campos del formulario return(RedirectToAction("CrearProducto")); } else //Si el producto con esa id esta en el sistema { //Creamos el mensaje de error ModelState.AddModelError("Id", $"Ya existe un producto con id: {unProducto.Id}"); //Devolvemos la vista return(View(unProducto)); } } catch (Exception unError) { //Podriamos guardar el error en base de datos //Retornamos la vista de error return(View("Error")); } } }
/*Nos devuelve un string con Nombre - Marca de un producto correspondiente al id que nos llega como parametro*/ private string NombreMarcaProducto(int idProducto) { //Anticipamos un posible error en la base try { //Instanciamos la logica de productos LogicaProducto logicaProducto = new LogicaProducto(); //Buscamos el producto ProductoDTO unProducto = logicaProducto.BuscarProducto(idProducto); //Juntamos el nombre y la marca en un mismo string string resultado = unProducto.Nombre + " " + unProducto.Marca; //Retornamos nombre y marca return(resultado); } catch (Exception) { //Retornamos un error para saber que algo fallo return("Algo salio mal"); } }
public ActionResult CrearFactura(FacturaModel nuevaFactura) { //Controlamos que el usuario este logueado, en este caso no importa si es admin o no if (Session["Logueado"] != null) { if (ModelState.IsValid) { //Nos anticipamos a cualquier error inesperado que pueda ocurrir en base usando try try { //Creamos una instancia de la logica de productos LogicaProducto logProductos = new LogicaProducto(); //Busco el producto ingresado en mi base de datos ProductoDTO productoActual = logProductos.BuscarProducto(nuevaFactura.IdProducto); //Sabemos que el producto no viene null porque el id es seleccionado de una lista. NO es ingresado por el usuario //Creamos el detalle y le cargamos los datos DetalleFacturaModel nuevoDetalle = new DetalleFacturaModel() { IdProducto = productoActual.Id, Cantidad = nuevaFactura.Cantidad, SubTotal = productoActual.Precio * nuevaFactura.Cantidad }; //Creamos una factura para asignarle lo que esta en session FacturaModel unaFactura = new FacturaModel(); unaFactura = (FacturaModel)Session["nuevaFactura"]; //Vemos si la lista de productos de la factura esta creada, sino la creamos y agregamos nuestro detalle(Porque si es null y tratamos de agregarle algo va a explotar) if (unaFactura.ListaDetalle == null) { //creamos la lista unaFactura.ListaDetalle = new List <DetalleFacturaModel>(); //Se lo pasamos a nuestra factura unaFactura.ListaDetalle.Add(nuevoDetalle); } else { //Si ya tiene algun item agregamos normalmente unaFactura.ListaDetalle.Add(nuevoDetalle); } //Actualizamos el gastototal, La funcion calcularGasto no esta en la capa logica porque usaremos un DetalleFacturaModel y la logica no tiene acceso... unaFactura.Total = CalcularGasto(unaFactura.ListaDetalle); //Guardamos los datos en la session Session["nuevaFactura"] = unaFactura; //Retornamos la vista: return(View(unaFactura)); } catch { //Redirigimos a la vista de error... return(View("Error")); } } else //Si el modelo no es valido { //Devolvemos la vista con los errores correspondientes return(View(nuevaFactura)); } } else//Si no esta logueado { //Redirigimos a la vista de LOGIN para que ingrese return(RedirectToAction("Login", "Ingreso")); } }