Crud Capas

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 15

CapaDatos

En la capa presentación. Configurare el string de conexión


{
"ConnectionStrings": {
"CadenaSQL": "Server=ALBEIROMURIEL\\SQLEXPRESS,
DataBase=CapasModulos;Integrated Security=True"
},

En el archivo programs

using Microsoft.EntityFrameworkCore;
using CapaDatos;
//using CapaEntity;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.


builder.Services.AddControllersWithViews();
builder.Services.AddDbContext<CapasModulosContext>(opciones =>
{
opciones.UseSqlServer(builder.Configuration.GetConnectionString("CadenaSQL"));
}); // CadenaSQL viene del appSettings.json

En la capa de Datos

Crear una carpeta Interfaces

Dentro crear una clase. Seleccionar Interface

namespace CapaDatos.Interfaces
{
//Sera una clase que utilizarán todos los modelos o metodos
public interface IGenericRepository<TEntityModel> where TEntityModel : class
{
//agregar metodos
Task<bool>Insertar(TEntityModel entity);
Task<bool>Actualizar(TEntityModel entity);
Task<bool>Eliminar(int id);
Task<bool>Obtener(int id);
//Devuelve una tabla
Task<IQueryable<TEntityModel>> ObtenerTodos();
}
}
Crear una clase

// utilizar la referencia de la interfaces


public class TableRepository : IGenericRepository<Docente>
{

Hacer clic implementar Interfaces

Escribir en la parte superior


private readonly CapasModulosContext _dbcontext;

public TableRepository(CapasModulosContext context)


{
_dbcontext = context;
}
Terminar los métodos
public async Task<bool> Actualizar(Docente modelo)
{
_dbcontext.Docentes.Update(modelo);
await _dbcontext.SaveChangesAsync();
return true;
}
public async Task<bool> Eliminar(string id)
{
Docente modelo = _dbcontext.Docentes.First(c => c.IdDocente == id);
_dbcontext.Docentes.Remove(modelo);
await _dbcontext.SaveChangesAsync();
return true;
}
public async Task<bool> Insertar(Docente modelo)
{
_dbcontext.Docentes.Add(modelo);
await _dbcontext.SaveChangesAsync();
return true;
}
public async Task<Docente> Obtener(string id)
{
return await _dbcontext.Docentes.FindAsync(id);
}
public async Task<IQueryable<Docente>> ObtenerTodos()
{
IQueryable<Docente> queryDocenteSQL=_dbcontext.Docentes;
return queryDocenteSQL;
}
public async Task<IQueryable<Docente>> ObtenerPorNombre()
{
IQueryable<Docente> queryDocenteSQL = _dbcontext.Docentes;
return queryDocenteSQL;
}
En la capa Reglas del negocio

Crear la carpeta Service y dentro una Interface


Crear la clase DocenteServices

Clic…. Implementar Interface


Al inicio crear constructor
using CapaDatos.Interfaces;
using CapaEntity;
namespace CapaReglasNeg.Service

public class DocenteService : IDocenteService


{
private readonly IGenericRepository<Docente> _DocenteRepo;

//Crear contructor
public DocenteService(IGenericRepository<Docente> DocenteRepo)
{
_DocenteRepo = DocenteRepo;
}

public async Task<bool> Actualizar(Docente modelo)


{
return await _DocenteRepo.Actualizar(modelo);
}
public async Task<bool> Eliminar(string id)
{
return await _DocenteRepo.Eliminar(id);
}

public async Task<bool> Insertar(Docente modelo)


{
return await _DocenteRepo.Insertar(modelo);
}

public async Task<Docente> Obtener(string id)


{
return await _DocenteRepo.Obtener(id); ;
}

public async Task<Docente> ObteberPorNombre(string nombreDocente)


{
IQueryable<Docente> queryDocenteSQL = await _DocenteRepo.ObtenerTodos();
Docente docente = queryDocenteSQL.Where(c => c.Nombres == nombreDocente).FirstOrDefault();
return docente;
}

public async Task<IQueryable<Docente>> ObtenerTodos()


{
return await _DocenteRepo.ObtenerTodos();
}

Task<Docente> IDocenteService.ObteberPorNombre(string nombreDocente)


{
throw new NotImplementedException();
}

Queda así
En la capa Presentacion
Trabajar inyección de dependencias

Falta el Modal….

<!-- Modal-->
<div class="modal fade" id="modalData" tabindex="-1" role="dialog"aria-hidden="true" data-backdrop="static">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h6>Datos Docente</h6>
<button class="close" type="button" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<form>
<input type="hidden" value="0" id="txtId">
<div class="row">
<div class="col-sm-8">
<div class="form-row">
<div class="form-group col-sm-6">
<label for="txtApellidos">Apellidos</label>
<input type="text" class="form-control form-control-sm input-validar" id="txtApellidos" name="txtApellidos">
</div>
<div class="form-group col-sm-6">
<label for="txtNombre">Nombres</label>
<input type="text" class="form-control form-control-sm input-validar" id="txtNombres" name="txtNombres">
</div>
</div>
<div class="form-row">
<div class="form-group col-sm-12">
<label for="txtIdentificacion">Identificación</label>
<input type="text" class="form-control form-control-sm input-validar" id="txtIdDocente" name="txtIdDocente">
</div>
</div>
<div class="form-row">
<div class="form-group col-sm-6">
<label for="txtDireccion">Dirección</label>
<input type="text" class="form-control form-control-sm input-validar" id="txtDireccion" name="txtDireccion">
</div>
<div class="form-group col-sm-6">
<label for="txtMunicipio">Municipio</label>
<input type="text" class="form-control form-control-sm input-validar" id="txtMunicipio" name="txtMunicipio">

</div>
</div>

<div class="form-row">
<div class="form-group col-sm-6">
<label for="txtCelular">Celular</label>
<input type="text" class="form-control form-control-sm input-validar" id="txtCelular" name="txtCelular">
</div>
<div class="form-group col-sm-6">
<label for="txt">.</label>
<input type="text" class="form-control form-control-sm input-validar" id="txt" name="txt">
</div>
</div>
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button class="btn btn-primary btn-sm" type="button" id="btnGuardar">Guardar</button>
<button class="btn btn-danger btn-sm" type="button" data-dismiss="modal">Cancel</button>
</div>
</div>
</div>
</div>

En programan antes de var app

builder.Services.AddScoped<IGenericRepository<Docente>,TableRepository>();
builder.Services.AddScoped<IDocenteService,DocenteService>();

En la carpeta Model--- crear una carpeta


Agregar una clase

En el DocenteController

Antes
using CapaEntity;
using CapaReglasNeg.Service;
using DocentesApp.Models;
using DocentesApp.Models.VieModels;
using Microsoft.AspNetCore.Mvc;
using System.Diagnostics;

namespace DocentesApp.Controllers
{
public class DocenteController : Controller
{
private readonly IDocenteService _docenteService;
public DocenteController(IDocenteService docenteService)
{
_docenteService = docenteService;
}
public IActionResult Index()
{
return View();
}
[HttpGet]
public async Task<IActionResult> Lista()
{
IQueryable<Docente> queryDocenteSQL = await _docenteService.ObtenerTodos();
List<VMCDocente> lista = queryDocenteSQL.Select(c => new VMCDocente()
{
IdDocente = c.IdDocente,
Nombres = c.Nombres,
Apellidos = c.Apellidos,
Direccion = c.Direccion,
Correo = c.Correo,
Celular = c.Celular,
Municipio = c.Municipio,
}).ToList();
return StatusCode(StatusCodes.Status200OK, lista);
}

[HttpPost]
public async Task<IActionResult> Insertar([FromBody] VMCDocente modelo)
{
Docente NuevoModelo = new Docente()
{
Nombres = modelo.Nombres,
Apellidos = modelo.Apellidos,
Direccion = modelo.Direccion,
Correo = modelo.Correo,
Celular = modelo.Celular,
Municipio = modelo.Municipio
};
bool respuesta = await _docenteService.Insertar(NuevoModelo);
return StatusCode(StatusCodes.Status200OK, new { valor = respuesta });
}

[HttpPut]
public async Task<IActionResult> Actualizar([FromBody] VMCDocente modelo)
{
Docente NuevoModelo = new Docente()
{
IdDocente = modelo.IdDocente,
Nombres = modelo.Nombres,
Apellidos = modelo.Apellidos,
Direccion = modelo.Direccion,
Correo = modelo.Correo,
Celular = modelo.Celular,
Municipio = modelo.Municipio
};
bool respuesta = await _docenteService.Actualizar(NuevoModelo);
return StatusCode(StatusCodes.Status200OK, new { valor = respuesta });
}

[HttpDelete]
public async Task<IActionResult> Eliminar(string id)
{

bool respuesta = await _docenteService.Eliminar(id);


return StatusCode(StatusCodes.Status200OK, new { valor = respuesta });
}

public IActionResult Privacy()


{
return View();
}

[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]


public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}

}
}

En el Index del DocenteController

También podría gustarte