Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Data;
- using ejemplo_crud_MVC_sqlServer.Models;
- using Microsoft.AspNetCore.Mvc;
- using Microsoft.Data.SqlClient;
- namespace ejemplo_crud_MVC_sqlServer.Controllers
- {
- public class ProductosController : Controller
- {
- private readonly string _connectionString;
- public ProductosController(IConfiguration configuration)
- {
- _connectionString = configuration.GetConnectionString("DefaultConnection");
- }
- public IActionResult Index(int pagina = 1, int tamañoPagina = 10)
- {
- var productos = ObtenerProductos(pagina, tamañoPagina);
- var totalProductos = ObtenerTotalProductos();
- ViewBag.TotalPaginas = (int)Math.Ceiling((double)totalProductos / tamañoPagina);
- ViewBag.PaginaActual = pagina;
- return View(productos);
- }
- private int ObtenerTotalProductos()
- {
- int totalProductos = 0;
- using (var connection = new SqlConnection(_connectionString))
- {
- connection.Open();
- var command = new SqlCommand("sp_CRUD_General", connection)
- {
- CommandType = CommandType.StoredProcedure
- };
- command.Parameters.AddWithValue("@accion", "count");
- command.Parameters.AddWithValue("@tabla", "producto");
- command.Parameters.AddWithValue("@id", DBNull.Value);
- command.Parameters.AddWithValue("@pagina", DBNull.Value);
- command.Parameters.AddWithValue("@tamañoPagina", DBNull.Value);
- using (var reader = command.ExecuteReader())
- {
- if (reader.Read())
- {
- totalProductos = (int)reader["TotalProductos"];
- }
- }
- }
- return totalProductos;
- }
- private List<Producto> ObtenerProductos(int pagina, int tamañoPagina)
- {
- var productos = new List<Producto>();
- using (var connection = new SqlConnection(_connectionString))
- {
- connection.Open();
- var command = new SqlCommand("sp_CRUD_General", connection)
- {
- CommandType = CommandType.StoredProcedure
- };
- command.Parameters.AddWithValue("@accion", "select");
- command.Parameters.AddWithValue("@tabla", "producto");
- command.Parameters.AddWithValue("@id", DBNull.Value);
- command.Parameters.AddWithValue("@pagina", pagina);
- command.Parameters.AddWithValue("@tamañoPagina", tamañoPagina);
- using (var reader = command.ExecuteReader())
- {
- while (reader.Read())
- {
- productos.Add(new Producto
- {
- idProducto = (int)reader["IdProducto"],
- nombreProducto = reader["NombreProducto"].ToString(),
- idCategoria = (int)reader["IdCategoria"],
- descripcion = reader["Descripcion"].ToString(),
- Categoria = new Categoria
- {
- idCategoria = (int)reader["IdCategoria"],
- nombreCategoria = reader["NombreCategoria"].ToString()
- }
- });
- }
- }
- }
- return productos;
- }
- private List<Categoria> ObtenerCategorias()
- {
- var categorias = new List<Categoria>();
- using (var connection = new SqlConnection(_connectionString))
- {
- connection.Open();
- var command = new SqlCommand("sp_CRUD_General", connection)
- {
- CommandType = CommandType.StoredProcedure
- };
- command.Parameters.AddWithValue("@accion", "select");
- command.Parameters.AddWithValue("@tabla", "categoria");
- command.Parameters.AddWithValue("@id", DBNull.Value);
- command.Parameters.AddWithValue("@pagina", DBNull.Value);
- command.Parameters.AddWithValue("@tamañoPagina", DBNull.Value);
- using (var reader = command.ExecuteReader())
- {
- while (reader.Read())
- {
- categorias.Add(new Categoria
- {
- idCategoria = (int)reader["IdCategoria"],
- nombreCategoria = reader["NombreCategoria"].ToString()
- });
- }
- }
- }
- return categorias;
- }
- public IActionResult CrearOEditar(int? id)
- {
- ViewBag.Categorias = ObtenerCategorias();
- if (!id.HasValue)
- {
- return View(new Producto());
- }
- var producto = ObtenerProductoPorId(id.Value);
- if (producto == null)
- {
- return NotFound();
- }
- return View(producto);
- }
- private Producto ObtenerProductoPorId(int idProducto)
- {
- Producto producto = null;
- using (var connection = new SqlConnection(_connectionString))
- {
- connection.Open();
- var command = new SqlCommand("sp_CRUD_General", connection)
- {
- CommandType = CommandType.StoredProcedure
- };
- command.Parameters.AddWithValue("@accion", "select");
- command.Parameters.AddWithValue("@tabla", "producto");
- command.Parameters.AddWithValue("@id", idProducto);
- using (var reader = command.ExecuteReader())
- {
- if (reader.Read())
- {
- producto = new Producto
- {
- idProducto = (int)reader["IdProducto"],
- nombreProducto = reader["NombreProducto"].ToString(),
- idCategoria = (int)reader["IdCategoria"],
- descripcion = reader["Descripcion"].ToString(),
- Categoria = new Categoria
- {
- idCategoria = (int)reader["IdCategoria"],
- nombreCategoria = reader["NombreCategoria"].ToString()
- }
- };
- }
- }
- }
- return producto;
- }
- [HttpPost]
- public IActionResult CrearOEditar(Producto producto)
- {
- int filasAfectadas = 0;
- try
- {
- using (var connection = new SqlConnection(_connectionString))
- {
- connection.Open();
- using (var command = new SqlCommand("sp_CRUD_General", connection))
- {
- command.CommandType = CommandType.StoredProcedure;
- string accion = producto.idProducto == 0 ? "insert" : "update";
- command.Parameters.AddWithValue("@accion", accion);
- command.Parameters.AddWithValue("@tabla", "producto");
- command.Parameters.AddWithValue("@id", producto.idProducto == 0 ? (object)DBNull.Value : producto.idProducto);
- command.Parameters.AddWithValue("@nombre", producto.nombreProducto);
- command.Parameters.AddWithValue("@descripcion", producto.descripcion);
- command.Parameters.AddWithValue("@idCategoria", producto.idCategoria);
- command.Parameters.AddWithValue("@pagina", DBNull.Value);
- command.Parameters.AddWithValue("@tamañoPagina", DBNull.Value);
- var returnParam = new SqlParameter
- {
- Direction = ParameterDirection.ReturnValue,
- SqlDbType = SqlDbType.Int
- };
- command.Parameters.Add(returnParam);
- command.ExecuteNonQuery();
- filasAfectadas = (int)returnParam.Value;
- }
- }
- if (filasAfectadas > 0)
- {
- TempData["SuccessMessage"] = "Producto guardado exitosamente.";
- }
- else if (filasAfectadas == 0)
- {
- TempData["ErrorMessage"] = "No se realizaron cambios en el producto.";
- }
- else
- {
- TempData["ErrorMessage"] = "Ocurrió un error al guardar el producto.";
- }
- }
- catch (Exception ex)
- {
- TempData["ErrorMessage"] = "Ocurrió un error inesperado: " + ex.Message;
- }
- return RedirectToAction("Index");
- }
- public IActionResult Eliminar(int id)
- {
- int filasAfectadas = 0;
- try
- {
- using (var connection = new SqlConnection(_connectionString))
- {
- connection.Open();
- using (var command = new SqlCommand("sp_CRUD_General", connection))
- {
- command.CommandType = CommandType.StoredProcedure;
- command.Parameters.AddWithValue("@accion", "delete");
- command.Parameters.AddWithValue("@tabla", "producto");
- command.Parameters.AddWithValue("@id", id);
- command.Parameters.AddWithValue("@nombre", DBNull.Value);
- command.Parameters.AddWithValue("@descripcion", DBNull.Value);
- command.Parameters.AddWithValue("@idCategoria", DBNull.Value);
- command.Parameters.AddWithValue("@pagina", DBNull.Value);
- command.Parameters.AddWithValue("@tamañoPagina", DBNull.Value);
- var returnParam = new SqlParameter
- {
- Direction = ParameterDirection.ReturnValue,
- SqlDbType = SqlDbType.Int
- };
- command.Parameters.Add(returnParam);
- command.ExecuteNonQuery();
- filasAfectadas = (int)returnParam.Value;
- }
- }
- if (filasAfectadas > 0)
- {
- TempData["SuccessMessage"] = "Producto eliminado exitosamente.";
- }
- else if (filasAfectadas == 0)
- {
- TempData["ErrorMessage"] = "No se encontró el producto a eliminar.";
- }
- else
- {
- TempData["ErrorMessage"] = "Ocurrió un error al eliminar el producto.";
- }
- }
- catch (Exception ex)
- {
- TempData["ErrorMessage"] = "Ocurrió un error inesperado: " + ex.Message;
- }
- return RedirectToAction("Index");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement