252 lines
11 KiB
C#
252 lines
11 KiB
C#
using CuentasCobrar.CORE.Exceptions;
|
|
using CuentasCobrar.UI.Helpers;
|
|
using CuentasCobrar.UI.Models;
|
|
using CuentasCobrar.UI.Models.Filters;
|
|
using CuentasCobrar.UI.Services.Interfaces;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using static CuentasCobrar.UI.Helpers.Enum;
|
|
|
|
namespace CuentasCobrar.UI.Controllers
|
|
{
|
|
public class PaisController : BaseController
|
|
{
|
|
private readonly IPaisAPI _paisAPI;
|
|
private readonly IUsuarioAPI _usuarioAPI;
|
|
|
|
public PaisController ( IUsuarioAPI usuarioAPI, IPaisAPI paisAPI )
|
|
{
|
|
_paisAPI = paisAPI;
|
|
_usuarioAPI = usuarioAPI;
|
|
}
|
|
public async Task<ActionResult> Index ( PaginacionFilterModel filtros )
|
|
{
|
|
|
|
List<PaisViewModel> paises = new List<PaisViewModel> ();
|
|
try
|
|
{
|
|
var token = Request.Cookies["CookieToken"];
|
|
if (token == null)
|
|
{
|
|
string tokenUsuario = await CrearToken ( _usuarioAPI );
|
|
token = tokenUsuario;
|
|
CrearCookies ( tokenUsuario );
|
|
}
|
|
var rolesCookie = Request.Cookies["CookieRoles"];
|
|
var listaRoles = new List<string> ( rolesCookie.Split ( "," ) );
|
|
if (!listaRoles.Exists ( r => r == "ADMINISTRADOR" || r == "OPERATIVO" ))
|
|
{
|
|
throw new AuthorizeException ( 403, "Usuario no autorizado" );
|
|
}
|
|
paises = await _paisAPI.ObtenerPaisesPaginados ( token, filtros );
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (ex.GetType () == typeof ( AuthorizeException ))
|
|
{
|
|
AuthorizeException excepcion = ex as AuthorizeException;
|
|
CustomNotification ( $"Error {excepcion.number}: {excepcion.Message}", TipoNotificacion.error, NotificationPosition.Center, "Usuario" );
|
|
return RedirectToAction ( "Index", "Home" );
|
|
}
|
|
else
|
|
{
|
|
CustomNotification ( "Se produjo un error!", TipoNotificacion.error, NotificationPosition.Center, "País" );
|
|
return RedirectToAction ( "Index", "Home" );
|
|
}
|
|
}
|
|
|
|
return View ( paises );
|
|
}
|
|
public async Task<ActionResult> ActualizarPais ( PaisViewModel pais, PaginacionFilterModel filtros )
|
|
{
|
|
bool respuesta = false;
|
|
try
|
|
{
|
|
var token = Request.Cookies["CookieToken"];
|
|
if (token == null)
|
|
{
|
|
string tokenUsuario = await CrearToken ( _usuarioAPI );
|
|
token = tokenUsuario;
|
|
CrearCookies ( tokenUsuario );
|
|
}
|
|
if (ModelState.IsValid)
|
|
{
|
|
|
|
respuesta = await _paisAPI.ActualizarPais ( token, pais );
|
|
if (respuesta)
|
|
{
|
|
CustomNotification ( "Se modificó el pais de manera exitosa", TipoNotificacion.success, NotificationPosition.Center, "País" );
|
|
return RedirectToAction ( "Index", new RouteValueDictionary ( filtros ) );
|
|
}
|
|
else
|
|
{
|
|
CustomNotification ( "Se produjo un error!", TipoNotificacion.error, NotificationPosition.Center, "País" );
|
|
return RedirectToAction ( "Index", new RouteValueDictionary ( filtros ) );
|
|
}
|
|
}
|
|
else
|
|
{
|
|
ViewBag.Paises = await _paisAPI.ObtenerPaisesPaginados ( token, filtros );
|
|
ViewBag.Filtros = filtros;
|
|
return View ( "Editar", pais );
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
if (ex.GetType () == typeof ( AuthorizeException ))
|
|
{
|
|
AuthorizeException excepcion = ex as AuthorizeException;
|
|
CustomNotification ( $"Error {excepcion.number}: {excepcion.Message}", TipoNotificacion.error, NotificationPosition.Center, "Usuario" );
|
|
return RedirectToAction ( "Index", new RouteValueDictionary ( filtros ) );
|
|
}
|
|
else
|
|
{
|
|
CustomNotification ( "Se produjo un error!", TipoNotificacion.error, NotificationPosition.Center, "País" );
|
|
return RedirectToAction ( "Index", new RouteValueDictionary ( filtros ) );
|
|
}
|
|
}
|
|
}
|
|
|
|
public async Task<ActionResult> AgregarPais ( PaisViewModel pais, PaginacionFilterModel filtros )
|
|
{
|
|
bool respuesta = false;
|
|
try
|
|
{
|
|
var token = Request.Cookies["CookieToken"];
|
|
if (token == null)
|
|
{
|
|
string tokenUsuario = await CrearToken ( _usuarioAPI );
|
|
token = tokenUsuario;
|
|
CrearCookies ( tokenUsuario );
|
|
}
|
|
if (ModelState.IsValid)
|
|
{
|
|
|
|
respuesta = await _paisAPI.AgregarPais ( token, pais );
|
|
if (respuesta)
|
|
{
|
|
CustomNotification ( "Se agregó el pais de manera exitosa", TipoNotificacion.success, NotificationPosition.Center, "Pais" );
|
|
return RedirectToAction ( "Index", new RouteValueDictionary ( filtros ) );
|
|
|
|
}
|
|
else
|
|
{
|
|
CustomNotification ( "Se produjo un error!", TipoNotificacion.error, NotificationPosition.Center, "Pais" );
|
|
return RedirectToAction ( "Index", new RouteValueDictionary ( filtros ) );
|
|
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
ViewBag.Paises = await _paisAPI.ObtenerPaisesPaginados ( token, filtros );
|
|
return View ( "Agregar", pais );
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (ex.GetType () == typeof ( AuthorizeException ))
|
|
{
|
|
AuthorizeException excepcion = ex as AuthorizeException;
|
|
CustomNotification ( $"Error {excepcion.number}: {excepcion.Message}", TipoNotificacion.error, NotificationPosition.Center, "Usuario" );
|
|
return RedirectToAction ( "Index", new RouteValueDictionary ( filtros ) );
|
|
}
|
|
else
|
|
{
|
|
CustomNotification ( "Se produjo un error!", TipoNotificacion.error, NotificationPosition.Center, "País" );
|
|
return RedirectToAction ( "Index", new RouteValueDictionary ( filtros ) );
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
public async Task EliminarPais ( int id )
|
|
{
|
|
var token = Request.Cookies["CookieToken"];
|
|
if (token == null)
|
|
{
|
|
string tokenUsuario = await CrearToken ( _usuarioAPI );
|
|
token = tokenUsuario;
|
|
CrearCookies ( tokenUsuario );
|
|
}
|
|
await _paisAPI.EliminarPais ( token, id );
|
|
}
|
|
|
|
public async Task<ActionResult> Editar ( int id, PaginacionFilterModel filtros )
|
|
{
|
|
PaisViewModel pais = new PaisViewModel ();
|
|
try
|
|
{
|
|
var token = Request.Cookies["CookieToken"];
|
|
if (token == null)
|
|
{
|
|
string tokenUsuario = await CrearToken ( _usuarioAPI );
|
|
token = tokenUsuario;
|
|
CrearCookies ( tokenUsuario );
|
|
}
|
|
var rolesCookie = Request.Cookies["CookieRoles"];
|
|
var listaRoles = new List<string> ( rolesCookie.Split ( "," ) );
|
|
if (!listaRoles.Exists ( r => r == "ADMINISTRADOR" || r == "OPERATIVO" ))
|
|
{
|
|
throw new AuthorizeException ( 403, "Usuario no autorizado" );
|
|
}
|
|
pais = await _paisAPI.ObtenerPais ( token, id );
|
|
ViewBag.Paises = await _paisAPI.ObtenerPaisesPaginados ( token, filtros );
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (ex.GetType () == typeof ( AuthorizeException ))
|
|
{
|
|
AuthorizeException excepcion = ex as AuthorizeException;
|
|
CustomNotification ( $"Error {excepcion.number}: {excepcion.Message}", TipoNotificacion.error, NotificationPosition.Center, "Usuario" );
|
|
return RedirectToAction ( "Index", new RouteValueDictionary ( filtros ) );
|
|
}
|
|
else
|
|
{
|
|
CustomNotification ( "Se produjo un error!", TipoNotificacion.error, NotificationPosition.Center, "País" );
|
|
return RedirectToAction ( "Index", new RouteValueDictionary ( filtros ) );
|
|
}
|
|
}
|
|
return View ( pais );
|
|
}
|
|
|
|
public async Task<ActionResult> Agregar ( PaginacionFilterModel filtros )
|
|
{
|
|
try
|
|
{
|
|
var token = Request.Cookies["CookieToken"];
|
|
if (token == null)
|
|
{
|
|
string tokenUsuario = await CrearToken ( _usuarioAPI );
|
|
token = tokenUsuario;
|
|
CrearCookies ( tokenUsuario );
|
|
}
|
|
var rolesCookie = Request.Cookies["CookieRoles"];
|
|
var listaRoles = new List<string> ( rolesCookie.Split ( "," ) );
|
|
if (!listaRoles.Exists ( r => r == "ADMINISTRADOR" || r == "OPERATIVO" ))
|
|
{
|
|
throw new AuthorizeException ( 403, "Usuario no autorizado" );
|
|
}
|
|
ViewBag.Paises = await _paisAPI.ObtenerPaisesPaginados ( token, filtros );
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (ex.GetType () == typeof ( AuthorizeException ))
|
|
{
|
|
AuthorizeException excepcion = ex as AuthorizeException;
|
|
CustomNotification ( $"Error {excepcion.number}: {excepcion.Message}", TipoNotificacion.error, NotificationPosition.Center, "Usuario" );
|
|
return RedirectToAction ( "Index", new RouteValueDictionary ( filtros ) );
|
|
}
|
|
else
|
|
{
|
|
CustomNotification ( "Se produjo un error!", TipoNotificacion.error, NotificationPosition.Center, "País" );
|
|
return RedirectToAction ( "Index", new RouteValueDictionary ( filtros ) );
|
|
}
|
|
}
|
|
return View ();
|
|
}
|
|
|
|
}
|
|
}
|