﻿using SistemaAguaPotable.Core.Abstract.Services;
using SistemaAguaPotable.Core.Model;
using SistemaAguaPotable.Web.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace SistemaAguaPotable.Web.Controllers
{
    public class SeguridadController : Controller
    {
        //
        // GET: /Seguridad/

        private IUsuariosService _usuariosService;
        

        public SeguridadController(IUsuariosService usuariosService)
        {
            _usuariosService = usuariosService;
        }

        public ActionResult Index()
        {
            List<usuario> lista = _usuariosService.GetUsuarios();
            return View(lista);
        }

        [HttpPost]
        public ActionResult Login(LoginVM data) {

            TryValidateModel(data);
            if (ModelState.IsValid)
            {
                var user_ = System.Configuration.ConfigurationManager.AppSettings["user"];
                var pass_ = System.Configuration.ConfigurationManager.AppSettings["password"];

                if (!(data.Usuario == user_ && data.Contrasena == pass_))
                {
                    ModelState.AddModelError("Error", "El usuario y/o contraseña es invalido.");
                }
                else
                {
                    Session["usr_admin"] = data;
                    return RedirectToAction("Clientes","Administracion");
                }
            }
            return View();
        
        }

        public ActionResult Login() {
            LoginVM data = new LoginVM();
            return View(data);
        
        }
   
        public ActionResult Usuarios() {


            return View(_usuariosService.GetUsuarios());
        }



        public ActionResult Eliminar(int codigo) {


            _usuariosService.EliminarUsuario(codigo);

            return RedirectToAction("Usuarios");
        }

        [HttpGet]
        public ActionResult DetalleUsuario(int codigo = 0)
        {

            usuariosVM datos = new usuariosVM { 
            roles = _usuariosService.GetRoles(),
            usuario = _usuariosService.GetUsuario(codigo)
            };

            

            return View(datos);
        }

        public ActionResult cerrarSesion()
        {
            Session.Abandon();
            Session.Clear();
            return RedirectToAction("Login", "Seguridad");
        }


        [HttpPost]
        public ActionResult DetalleUsuario(usuario usuario) {



            _usuariosService.Guardar(usuario);

            return RedirectToAction("Usuarios");
        }

    }
}
