No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Creación de servicios

18/22
Recursos

Aportes 12

Preguntas 5

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Al minuto 7:42, cuando estamos verificando la categoría actual, es preferible seguir la estrategia guard. Consiste básicamente en realizar validaciones y romper/interrumpir la ejecución antes de la lógica principal:

if(categoriaActual == null)
{
	return NotFound();
}
// Resto de la lógica

De esta manera evitamos el uso de else y el código es más legible.

CategoriaService


using webapi.Models;

namespace webapi.Services;

public class CategoriaService : ICategoriaService
{
    TareasContext context;
    public CategoriaService(TareasContext dbContext) {
        context = dbContext;
    }
    public IEnumerable<Categoria> Get(){
        return context.Categorias;
    }

    public async Task Save(Categoria categoria) {
        context.Add(categoria);
        await context.SaveChangesAsync();
    }

    public async Task Update(Guid id, Categoria categoria) {
        var categoriaActual = context.Categorias.Find(id);
        if (categoriaActual != null) {
            categoriaActual.Nombre = categoria.Nombre;
            categoriaActual.Descripcion = categoria.Descripcion;
            categoriaActual.Peso = categoria.Peso;

            await context.SaveChangesAsync();
        }

    }

    public async Task Delete(Guid id) {
        var categoriaActual = context.Categorias.Find(id);
        if (categoriaActual != null) {
            context.Remove(categoriaActual);
            await context.SaveChangesAsync();
        }
        
    }
}

public interface ICategoriaService
{
    IEnumerable<Categoria> Get();
    Task Save(Categoria categoria);
    Task Update(Guid id, Categoria categoria);
    Task Delete(Guid id);

}

TareaService


using webapi.Models;

namespace webapi.Services;

public class TareaService : ITareaService
{
    TareasContext context;
    public TareaService(TareasContext dbContext) {
        context = dbContext;
    }
    public IEnumerable<Tarea> Get(){
        return context.Tareas;
    }

    public async Task Save(Tarea tarea) {
        context.Add(tarea);
        await context.SaveChangesAsync();
    }

    public async Task Update(Guid id, Tarea tarea) {
        var tareaActual = context.Tareas.Find(id);
        if (tareaActual != null) {
            tareaActual.CategoriaId = tarea.CategoriaId;
            tareaActual.Titulo = tarea.Titulo;
            tareaActual.PrioridadTarea = tarea.PrioridadTarea;
            tareaActual.Descripcion = tarea.Descripcion;

            await context.SaveChangesAsync();
        }

    }

    public async Task Delete(Guid id) {
        var tareaActual = context.Tareas.Find(id);
        if (tareaActual != null) {
            context.Remove(tareaActual);
            await context.SaveChangesAsync();
        }
        
    }
}

public interface ITareaService
{
    IEnumerable<Tarea> Get();
    Task Save(Tarea tarea);
    Task Update(Guid id, Tarea tarea);
    Task Delete(Guid id);

}

En el servicio de categoría hay un error al hacer el Update, se están actualizando los datos de categoria con categoría. Y deberían actualizarse categoriaActual con los datos de categoria.

Adjunto mi clase Update de Categoria.

    public async Task Update(Guid id, Categoria categoria)
    {
        var categoriaActual = context.Categorias.Find(id);
        if (categoriaActual != null)
        {
            categoriaActual.Nombre = categoria.Nombre;
            categoriaActual.Descripcion = categoria.Descripcion;
            categoriaActual.Peso = categoria.Peso;

            await context.SaveChangesAsync();
        }

    }

Excelente clase

Aporte de Tareas

![](

![](

![](

Si alguien quiere que le aparezca estas ayudas, solo instalece IntelliCode en su VS Code.
.
.

Reto con TareasService:

using webapi.Models;
namespace webapi.Services;

public class TareasService : ITareasService
{
  TareasContext context;

  public TareasService(TareasContext dbContext)
  {
    context = dbContext;
  }

  public IEnumerable<Tarea> Get()
  {
    return context.Tareas;
  }

  public async Task Save(Tarea tarea)
  {
    context.Tareas.Add(tarea);
    await context.SaveChangesAsync();
  }

  public async Task Update(Guid id, Tarea tarea)
  {
    var tareaActual = context.Tareas.Find(id);
    if (tareaActual != null)
    {
      tareaActual.Titulo = tarea.Titulo;
      tareaActual.Descripcion = tarea.Descripcion;
      tareaActual.PrioridadTarea = tarea.PrioridadTarea;
      tareaActual.FechaCreacion = tarea.FechaCreacion;
      tareaActual.Categoria = tarea.Categoria;

      await context.SaveChangesAsync();
    }
  }

  public async Task Delete(Guid id)
  {
    var tareaActual = context.Tareas.Find(id);
    if (tareaActual != null)
    {
      context.Tareas.Remove(tareaActual);
      await context.SaveChangesAsync();
    }
  }
}

public interface ITareasService
{
  IEnumerable<Tarea> Get();
}

   public async Task Save(Tarea tarea)
    {
        context.Add(tarea);
        await context.SaveChangesAsync();
    }

    public async Task Update(Guid id, Tarea tarea)
    {
        var tareaActual = context.Tareas.Find(id);
        
        if(tareaActual != null)
        {
            tareaActual.CategoriaId = tarea.CategoriaId;
            tareaActual.Titulo = tarea.Titulo;
            tareaActual.Descripcion = tarea.Descripcion;
            tareaActual.PrioridadTarea = tarea.PrioridadTarea;
            tareaActual.FechaCreacion = tarea.FechaCreacion;
            tareaActual.Categoria = tarea.Categoria;
            tareaActual.Resumen = tarea.Resumen;

            await context.SaveChangesAsync();

        }
    }
     public async Task Delete(Guid id)
    {
        var tareaActual = context.Tareas.Find(id);
        
        if(tareaActual != null)
        {
            context.Remove(tareaActual);
            await context.SaveChangesAsync();

        }
    }
}

public interface ITareasService
{
    IEnumerable<Tarea> Get();
    Task Save(Tarea tarea);

    Task Update(Guid id, Tarea tarea);
    Task Delete(Guid id);

TareaServices

using WebAPICurso.Models;

namespace WebAPICurso.Services;

public class TareaServices : ITareaServices
{
    TareasContext _context;

    public TareaServices(TareasContext context)
    {
        _context = context;
    }

    public IEnumerable<Tarea> Get()
    {
        return _context.Tareas;
    }

    public async Task Save(Tarea tarea)
    {
        await _context.Tareas.AddAsync(tarea);
        _context.SaveChanges();
    }

    public async Task Update(Guid id, Tarea tarea)
    {
        var tareaActual = _context.Tareas.Find(id);

        if(tareaActual != null)
        {
            tareaActual.Titulo = tarea.Titulo;
            tareaActual.Descripcion = tarea.Descripcion;
            tareaActual.Usuario = tarea.Usuario;

            await _context.SaveChangesAsync();
        }
    }

    public async Task Delete(Guid id)
    {
        var tareaActual = _context.Tareas.Find(id);

        if(tareaActual != null)
        {
            _context.Tareas.Remove(tareaActual);

            await _context.SaveChangesAsync();
        }
    }

}

public interface ITareaServices
{
    IEnumerable<Tarea> Get();

    Task Save(Tarea tarea);

    Task Update(Guid id, Tarea tarea);

    Task Delete(Guid id);
}

Aquí dejo mi codigo, al cual comence usando la palabra reservada Task para tarea. Aprendan de los errores ajenos no hagan estas cosas sino tendran que estar asi igual que yo

using EF.Models;

namespace API.Service;
public class TaskService : ITaskService
{
    TaskContext context;

    public TaskService(TaskContext dbcontext)
    {
        context = dbcontext;
    }

    public IEnumerable<EF.Models.Task> Get()
    {
        return context.Tasks;
    }

    //Esta es la razon por la que no debemos usar palabras recervadas.
    public async System.Threading.Tasks.Task Save(EF.Models.Task Task)
    {
        context.Add(Task);
        await context.SaveChangesAsync();
    }

    public async System.Threading.Tasks.Task update(Guid id, EF.Models.Task Task)
    {
        var TaskPresent = context.Tasks.Find(id);
        if (TaskPresent != null)
        {
            TaskPresent.Title = Task.Title;
            TaskPresent.Description = Task.Description;
            TaskPresent.Date = Task.Date;
            TaskPresent.PriorityTask = Task.PriorityTask;

            await context.SaveChangesAsync();
        }
    }

    public async System.Threading.Tasks.Task Delete(Guid id)
    {
        var TaskPresent = context.Categoties.Find(id);
        if (TaskPresent != null)
        {
            context.Remove(TaskPresent);
            await context.SaveChangesAsync();
        }
    }

}

public interface ITaskService
{
    IEnumerable<EF.Models.Task> Get();
    System.Threading.Tasks.Task Delete(Guid id);
    System.Threading.Tasks.Task update(Guid id, EF.Models.Task Task);
    System.Threading.Tasks.Task Save(EF.Models.Task Task);

}

Mi TareaService 😊

using webapi.Models;
namespace webapi.Services;


public class TareasService : ITareasService
{

    TareasContext context;
    public TareasService(TareasContext dbcontext)
    {
        context = dbcontext;
    }

    public IEnumerable<Tarea> Get()
    {
        return context.Tareas;
    }
    public async Task Save(Tarea tarea)
    {
        context.Add(tarea);
        await context.SaveChangesAsync();
    }

    public async Task Update(Guid id, Tarea tarea)
    {
        var tareaActual = context.Tareas.Find(id);
        if (tareaActual != null)
        {
            tareaActual.CategoriaId = tarea.CategoriaId;
            tareaActual.Titulo = tarea.Titulo;
            tareaActual.Descripcion = tarea.Descripcion;
            tareaActual.PrioridadTarea = tarea.PrioridadTarea;
            tareaActual.FechaCreacion = tarea.FechaCreacion;
            tareaActual.Categoria = tarea.Categoria;
            await context.SaveChangesAsync();
        }
    }

    public async Task Delete(Guid id)
    {
        var tareaActual = context.Tareas.Find(id);
        if (tareaActual != null)
        {
            context.Remove(tareaActual);
            await context.SaveChangesAsync();
        }
    }
}

public interface ITareasService
{
    IEnumerable<Tarea> Get();
    Task Save(Tarea tarea);
    Task Update(Guid id, Tarea tarea);
    Task Delete(Guid id);
}
//Aqui pienso que es otra forma de buscar la categoria
 var categoriaActual= context.Categorias.FirstOrDefault(p=>p.CategoriaId==id);