﻿using System.Collections.Generic;
using System.Linq;
using UPT.BOT.Dominio.Entidades.BOT;
using UPT.BOT.Dominio.Repositorios.BOT;
using UPT.BOT.Infraestructura.Datos.BOT.Contextos;
using UPT.BOT.Infraestructura.Datos.BOT.Shared;
using UPT.BOT.Utilidades.Utilidades.Constantes;

namespace UPT.BOT.Infraestructura.Datos.BOT.Repositorios
{
    public class EventoRepository : BaseRepository, IEventoRepository
    {
        private readonly BotContext contextoBot;

        public EventoRepository(BotContext contextoBot)
        {
            this.contextoBot = contextoBot;
        }

        public EventoEntity Buscar(object id)
        {
            return Ejecutar(() =>
            {
                return contextoBot.Evento.Find(id);
            });
        }

        public void Crear(EventoEntity entidad)
        {
            Ejecutar(() =>
            {
                contextoBot.Evento.Add(entidad);
                contextoBot.GuardarCambios();
            });
        }

        public void Eliminar(object id)
        {
            Ejecutar(() =>
            {
                EventoEntity entidad = contextoBot.Evento.Find(id);
                contextoBot.Evento.Remove(entidad);
                contextoBot.GuardarCambios();
            });
        }

        public IList<EventoEntity> Leer()
        {
            return Ejecutar(() =>
            {
                return contextoBot.Evento.Where(p => p.IndicadorEstado == EstadoEntidad.Activo).OrderByDescending(p => p.FechaRegistro).ToList();
            });
        }

        public void Modificar()
        {
            Ejecutar(() =>
            {
                contextoBot.GuardarCambios();
            });
        }
    }
}
