Agregada rama DEV-REC-HUMA de TPAtesa
34
TPAtesa_RecHuma/PruebaAzureAD.sln
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 17
|
||||||
|
VisualStudioVersion = 17.1.31911.260
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PruebaAzureAD", "PruebaAzureAD\PruebaAzureAD.csproj", "{0B44D687-AD22-4638-A0F3-EBD5A770E1AD}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{0B44D687-AD22-4638-A0F3-EBD5A770E1AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{0B44D687-AD22-4638-A0F3-EBD5A770E1AD}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{0B44D687-AD22-4638-A0F3-EBD5A770E1AD}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{0B44D687-AD22-4638-A0F3-EBD5A770E1AD}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {85A8CD79-767C-499A-BBF7-2A33F91968A3}
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(TeamFoundationVersionControl) = preSolution
|
||||||
|
SccNumberOfProjects = 2
|
||||||
|
SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C}
|
||||||
|
SccTeamFoundationServer = http://192.168.1.10:8080/tfs/tpatesa
|
||||||
|
SccLocalPath0 = .
|
||||||
|
SccProjectUniqueName1 = PruebaAzureAD\\PruebaAzureAD.csproj
|
||||||
|
SccProjectName1 = PruebaAzureAD
|
||||||
|
SccLocalPath1 = PruebaAzureAD
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
12
TPAtesa_RecHuma/PruebaAzureAD/.config/dotnet-tools.json
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"isRoot": true,
|
||||||
|
"tools": {
|
||||||
|
"microsoft.dotnet-msidentity": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"commands": [
|
||||||
|
"dotnet-msidentity"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
81
TPAtesa_RecHuma/PruebaAzureAD/Controllers/HomeController.cs
Normal file
|
|
@ -0,0 +1,81 @@
|
||||||
|
using Microsoft.AspNetCore.Authorization;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using PruebaAzureAD.Models;
|
||||||
|
using PruebaAzureAD.Servicios;
|
||||||
|
using System.Diagnostics;
|
||||||
|
|
||||||
|
namespace PruebaAzureAD.Controllers
|
||||||
|
{
|
||||||
|
[Authorize]
|
||||||
|
public class HomeController : Controller
|
||||||
|
{
|
||||||
|
private readonly ILogger<HomeController> _logger;
|
||||||
|
|
||||||
|
readonly Persona persona = new Persona();
|
||||||
|
readonly Estado estado = new Estado();
|
||||||
|
readonly TipoIdentificacion tipoIdentificacion = new TipoIdentificacion();
|
||||||
|
readonly Pais pais = new Pais();
|
||||||
|
readonly EstadoCivil estadoCivil = new EstadoCivil();
|
||||||
|
readonly Universidad universidad = new Universidad();
|
||||||
|
readonly GradoAcademico gradoAcademico = new GradoAcademico();
|
||||||
|
readonly Empresa empresa = new Empresa();
|
||||||
|
readonly Puesto puesto = new Puesto();
|
||||||
|
readonly TipoNombramiento tipoNombramiento = new TipoNombramiento();
|
||||||
|
|
||||||
|
public HomeController(ILogger<HomeController> logger)
|
||||||
|
{
|
||||||
|
_logger = logger;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<IActionResult> Index()
|
||||||
|
{
|
||||||
|
var data = await persona.ObtenerPersonas();
|
||||||
|
return View(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<IActionResult> Agregar()
|
||||||
|
{
|
||||||
|
ViewBag.Estados = await estado.ObtenerEstados();
|
||||||
|
ViewBag.Tipos = await tipoIdentificacion.ObtenerTipoIdentificaciones();
|
||||||
|
ViewBag.Paises = await pais.ObtenerPaises();
|
||||||
|
ViewBag.EstadosCiviles = await estadoCivil.ObtenerEstadosCiviles();
|
||||||
|
//ViewBag.Provincias = await persona.ObtenerProvincias();
|
||||||
|
//ViewBag.Cantones = await persona.ObtenerCantones();
|
||||||
|
//ViewBag.Distritos = await persona.ObtenerDistritos();
|
||||||
|
ViewBag.Universidades = await universidad.ObtenerUniversidades();
|
||||||
|
ViewBag.GradosAcademicos = await gradoAcademico.ObtenerGradosAcademicos();
|
||||||
|
ViewBag.Empresas = await empresa.ObtenerEmpresas();
|
||||||
|
ViewBag.Puestos = await puesto.ObtenerPuestos();
|
||||||
|
ViewBag.TipoNombramiento = await tipoNombramiento.ObtenerNombramientos();
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<IActionResult> Agregar(PersonaViewModel funcionario)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
await persona.AgregarPersona(funcionario);
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
|
||||||
|
return RedirectToAction(nameof(Index));
|
||||||
|
}
|
||||||
|
|
||||||
|
public IActionResult Privacy()
|
||||||
|
{
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
|
||||||
|
[AllowAnonymous]
|
||||||
|
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
|
||||||
|
public IActionResult Error()
|
||||||
|
{
|
||||||
|
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
9
TPAtesa_RecHuma/PruebaAzureAD/Models/CantonViewModel.cs
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
namespace PruebaAzureAD.Models
|
||||||
|
{
|
||||||
|
public class CantonViewModel
|
||||||
|
{
|
||||||
|
public int IdProvincia { get; set; }
|
||||||
|
public int IdCanton { get; set; }
|
||||||
|
public string Descripcion { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
10
TPAtesa_RecHuma/PruebaAzureAD/Models/DistritoViewModel.cs
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
namespace PruebaAzureAD.Models
|
||||||
|
{
|
||||||
|
public class DistritoViewModel
|
||||||
|
{
|
||||||
|
public int IdProvincia { get; set; }
|
||||||
|
public int IdCanton { get; set; }
|
||||||
|
public int IdDistrito { get; set; }
|
||||||
|
public string Descripcion { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
9
TPAtesa_RecHuma/PruebaAzureAD/Models/EmpresaViewModel.cs
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
namespace PruebaAzureAD.Models
|
||||||
|
{
|
||||||
|
public class EmpresaViewModel
|
||||||
|
{
|
||||||
|
public int IdEmpresa { get; set; }
|
||||||
|
public string Nombre { get; set; }
|
||||||
|
public bool? Estado { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
9
TPAtesa_RecHuma/PruebaAzureAD/Models/ErrorViewModel.cs
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
namespace PruebaAzureAD.Models
|
||||||
|
{
|
||||||
|
public class ErrorViewModel
|
||||||
|
{
|
||||||
|
public string? RequestId { get; set; }
|
||||||
|
|
||||||
|
public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
namespace PruebaAzureAD.Models
|
||||||
|
{
|
||||||
|
public class EstadoCivilViewModel
|
||||||
|
{
|
||||||
|
public int IdEstadoCivil { get; set; }
|
||||||
|
public string Descripcion { get; set; }
|
||||||
|
public bool Estado { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
9
TPAtesa_RecHuma/PruebaAzureAD/Models/EstadoViewModel.cs
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
namespace PruebaAzureAD.Models
|
||||||
|
{
|
||||||
|
public class EstadoViewModel
|
||||||
|
{
|
||||||
|
public int IdEstado { get; set; }
|
||||||
|
public string Descripcion { get; set; }
|
||||||
|
public bool Estado { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
namespace PruebaAzureAD.Models
|
||||||
|
{
|
||||||
|
public class GradoAcademicoViewModel
|
||||||
|
{
|
||||||
|
public int IdGradoAcademico { get; set; }
|
||||||
|
public string Descripcion { get; set; }
|
||||||
|
public bool? Estado { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
10
TPAtesa_RecHuma/PruebaAzureAD/Models/PaisViewModel.cs
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
namespace PruebaAzureAD.Models
|
||||||
|
{
|
||||||
|
public class PaisViewModel
|
||||||
|
{
|
||||||
|
public int IdPais { get; set; }
|
||||||
|
public string Descripcion { get; set; }
|
||||||
|
public string Nacionalidad { get; set; }
|
||||||
|
public bool? Estado { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
78
TPAtesa_RecHuma/PruebaAzureAD/Models/PersonaViewModel.cs
Normal file
|
|
@ -0,0 +1,78 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace PruebaAzureAD.Models
|
||||||
|
{
|
||||||
|
public class PersonaViewModel
|
||||||
|
{
|
||||||
|
//public int IdPersona { get; set; }
|
||||||
|
[Required]
|
||||||
|
public int IdTipoIdentificacion { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public string NoIdentificacion { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public string Nombre { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public string PrimerApellido { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public string SegundoApellido { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public DateTime FechaNacimiento { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public int IdPaisNacionalidad { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public int IdEstadoCivil { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public string Direccion { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public string Correo { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public int IdUniversidad { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public int IdGradoAcademico { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public string Titulo { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public int IdEmpresa { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public int IdPuesto { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public int IdTipoNombramiento { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public DateTime FechaIngreso { get; set; }
|
||||||
|
|
||||||
|
public DateTime? FechaAscenso { get; set; }
|
||||||
|
public DateTime? FechaSalida { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public decimal SalarioBruto { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public string TelefonoPrincipal { get; set; }
|
||||||
|
|
||||||
|
public string? TelefonoSecundario { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public int IdEstado { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
namespace PruebaAzureAD.Models
|
||||||
|
{
|
||||||
|
public class ProvinciaViewModel
|
||||||
|
{
|
||||||
|
public int IdProvincia { get; set; }
|
||||||
|
public string Descripcion { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
9
TPAtesa_RecHuma/PruebaAzureAD/Models/PuestoViewModel.cs
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
namespace PruebaAzureAD.Models
|
||||||
|
{
|
||||||
|
public class PuestoViewModel
|
||||||
|
{
|
||||||
|
public int IdPuesto { get; set; }
|
||||||
|
public string Descripcion { get; set; }
|
||||||
|
public bool? Estado { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
namespace PruebaAzureAD.Models
|
||||||
|
{
|
||||||
|
public class TipoIdentificacionViewModel
|
||||||
|
{
|
||||||
|
public int IdTipoIdentificacion { get; set; }
|
||||||
|
public string Descripcion { get; set; }
|
||||||
|
public bool? Estado { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
namespace PruebaAzureAD.Models
|
||||||
|
{
|
||||||
|
public class TipoNombramientoViewModel
|
||||||
|
{
|
||||||
|
public int IdTipoNombramiento { get; set; }
|
||||||
|
public string Descripcion { get; set; }
|
||||||
|
public bool? Estado { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
10
TPAtesa_RecHuma/PruebaAzureAD/Models/UniversidadViewModel.cs
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
namespace PruebaAzureAD.Models
|
||||||
|
{
|
||||||
|
public class UniversidadViewModel
|
||||||
|
{
|
||||||
|
public int IdUniversidad { get; set; }
|
||||||
|
public string Abreviatura { get; set; }
|
||||||
|
public string Descripcion { get; set; }
|
||||||
|
public bool Estado { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
47
TPAtesa_RecHuma/PruebaAzureAD/Program.cs
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
using Microsoft.AspNetCore.Authentication;
|
||||||
|
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
|
||||||
|
using Microsoft.AspNetCore.Authorization;
|
||||||
|
using Microsoft.AspNetCore.Mvc.Authorization;
|
||||||
|
using Microsoft.Identity.Web;
|
||||||
|
using Microsoft.Identity.Web.UI;
|
||||||
|
|
||||||
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
|
|
||||||
|
// Add services to the container.
|
||||||
|
builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
|
||||||
|
.AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureAd"));
|
||||||
|
|
||||||
|
builder.Services.AddControllersWithViews(options =>
|
||||||
|
{
|
||||||
|
var policy = new AuthorizationPolicyBuilder()
|
||||||
|
.RequireAuthenticatedUser()
|
||||||
|
.Build();
|
||||||
|
options.Filters.Add(new AuthorizeFilter(policy));
|
||||||
|
});
|
||||||
|
builder.Services.AddRazorPages()
|
||||||
|
.AddMicrosoftIdentityUI();
|
||||||
|
|
||||||
|
var app = builder.Build();
|
||||||
|
|
||||||
|
// Configure the HTTP request pipeline.
|
||||||
|
if (!app.Environment.IsDevelopment())
|
||||||
|
{
|
||||||
|
app.UseExceptionHandler("/Home/Error");
|
||||||
|
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
|
||||||
|
app.UseHsts();
|
||||||
|
}
|
||||||
|
|
||||||
|
app.UseHttpsRedirection();
|
||||||
|
app.UseStaticFiles();
|
||||||
|
|
||||||
|
app.UseRouting();
|
||||||
|
|
||||||
|
app.UseAuthentication();
|
||||||
|
app.UseAuthorization();
|
||||||
|
|
||||||
|
app.MapControllerRoute(
|
||||||
|
name: "default",
|
||||||
|
pattern: "{controller=Home}/{action=Index}/{id?}");
|
||||||
|
app.MapRazorPages();
|
||||||
|
|
||||||
|
app.Run();
|
||||||
28
TPAtesa_RecHuma/PruebaAzureAD/Properties/launchSettings.json
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
{
|
||||||
|
"iisSettings": {
|
||||||
|
"windowsAuthentication": false,
|
||||||
|
"anonymousAuthentication": true,
|
||||||
|
"iisExpress": {
|
||||||
|
"applicationUrl": "http://localhost:37528",
|
||||||
|
"sslPort": 44356
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"profiles": {
|
||||||
|
"PruebaAzureAD": {
|
||||||
|
"commandName": "Project",
|
||||||
|
"dotnetRunMessages": true,
|
||||||
|
"launchBrowser": true,
|
||||||
|
"applicationUrl": "https://localhost:7169;http://localhost:5169",
|
||||||
|
"environmentVariables": {
|
||||||
|
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"IIS Express": {
|
||||||
|
"commandName": "IISExpress",
|
||||||
|
"launchBrowser": true,
|
||||||
|
"environmentVariables": {
|
||||||
|
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
29
TPAtesa_RecHuma/PruebaAzureAD/PruebaAzureAD.csproj
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||||
|
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<SccProjectName>SAK</SccProjectName>
|
||||||
|
<SccProvider>SAK</SccProvider>
|
||||||
|
<SccAuxPath>SAK</SccAuxPath>
|
||||||
|
<SccLocalPath>SAK</SccLocalPath>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<UserSecretsId>aspnet-PruebaAzureAD-694CF912-FE9E-4452-A6B4-7A027B953A1D</UserSecretsId>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.0" NoWarn="NU1605" />
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="6.0.0" NoWarn="NU1605" />
|
||||||
|
<PackageReference Include="Microsoft.Identity.Web" Version="1.16.0" />
|
||||||
|
<PackageReference Include="Microsoft.Identity.Web.UI" Version="1.16.0" />
|
||||||
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Folder Include="wwwroot\adminlte\" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
34
TPAtesa_RecHuma/PruebaAzureAD/Servicios/Canton.cs
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
using PruebaAzureAD.Models;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace PruebaAzureAD.Servicios
|
||||||
|
{
|
||||||
|
public class Canton
|
||||||
|
{
|
||||||
|
readonly string url = "http://localhost:46647/api/";
|
||||||
|
|
||||||
|
public async Task<List<CantonViewModel>?> ObtenerCantones()
|
||||||
|
{
|
||||||
|
List<CantonViewModel>? cantones = new List<CantonViewModel>();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (var httpClient = new HttpClient())
|
||||||
|
{
|
||||||
|
var respuesta = await httpClient.GetAsync(url + "Canton");
|
||||||
|
var respuestaString = await respuesta.Content.ReadAsStringAsync();
|
||||||
|
cantones = JsonSerializer.Deserialize<List<CantonViewModel>>(respuestaString,
|
||||||
|
new JsonSerializerOptions() { PropertyNameCaseInsensitive = true });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
|
||||||
|
return cantones;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
34
TPAtesa_RecHuma/PruebaAzureAD/Servicios/Distrito.cs
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
using PruebaAzureAD.Models;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace PruebaAzureAD.Servicios
|
||||||
|
{
|
||||||
|
public class Distrito
|
||||||
|
{
|
||||||
|
readonly string url = "http://localhost:46647/api/";
|
||||||
|
|
||||||
|
public async Task<List<DistritoViewModel>?> ObtenerDistritos()
|
||||||
|
{
|
||||||
|
List<DistritoViewModel>? distritos = new List<DistritoViewModel>();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (var httpClient = new HttpClient())
|
||||||
|
{
|
||||||
|
var respuesta = await httpClient.GetAsync(url + "Distrito");
|
||||||
|
var respuestaString = await respuesta.Content.ReadAsStringAsync();
|
||||||
|
distritos = JsonSerializer.Deserialize<List<DistritoViewModel>>(respuestaString,
|
||||||
|
new JsonSerializerOptions() { PropertyNameCaseInsensitive = true });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
|
||||||
|
return distritos;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
34
TPAtesa_RecHuma/PruebaAzureAD/Servicios/Empresa.cs
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
using PruebaAzureAD.Models;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace PruebaAzureAD.Servicios
|
||||||
|
{
|
||||||
|
public class Empresa
|
||||||
|
{
|
||||||
|
readonly string url = "http://localhost:46647/api/";
|
||||||
|
|
||||||
|
public async Task<List<EmpresaViewModel>?> ObtenerEmpresas()
|
||||||
|
{
|
||||||
|
List<EmpresaViewModel>? empresas = new List<EmpresaViewModel>();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (var httpClient = new HttpClient())
|
||||||
|
{
|
||||||
|
var respuesta = await httpClient.GetAsync(url + "Empresa");
|
||||||
|
var respuestaString = await respuesta.Content.ReadAsStringAsync();
|
||||||
|
empresas = JsonSerializer.Deserialize<List<EmpresaViewModel>>(respuestaString,
|
||||||
|
new JsonSerializerOptions() { PropertyNameCaseInsensitive = true });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
|
||||||
|
return empresas;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
34
TPAtesa_RecHuma/PruebaAzureAD/Servicios/Estado.cs
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
using PruebaAzureAD.Models;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace PruebaAzureAD.Servicios
|
||||||
|
{
|
||||||
|
public class Estado
|
||||||
|
{
|
||||||
|
readonly string url = "http://localhost:46647/api/";
|
||||||
|
|
||||||
|
public async Task<List<EstadoViewModel>?> ObtenerEstados()
|
||||||
|
{
|
||||||
|
List<EstadoViewModel>? estados = new List<EstadoViewModel>();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (var httpClient = new HttpClient())
|
||||||
|
{
|
||||||
|
var respuesta = await httpClient.GetAsync(url + "Estado");
|
||||||
|
var respuestaString = await respuesta.Content.ReadAsStringAsync();
|
||||||
|
estados = JsonSerializer.Deserialize<List<EstadoViewModel>>(respuestaString,
|
||||||
|
new JsonSerializerOptions() { PropertyNameCaseInsensitive = true });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
|
||||||
|
return estados;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
34
TPAtesa_RecHuma/PruebaAzureAD/Servicios/EstadoCivil.cs
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
using PruebaAzureAD.Models;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace PruebaAzureAD.Servicios
|
||||||
|
{
|
||||||
|
public class EstadoCivil
|
||||||
|
{
|
||||||
|
readonly string url = "http://localhost:46647/api/";
|
||||||
|
|
||||||
|
public async Task<List<EstadoCivilViewModel>?> ObtenerEstadosCiviles()
|
||||||
|
{
|
||||||
|
List<EstadoCivilViewModel>? estadosCiviles = new List<EstadoCivilViewModel>();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (var httpClient = new HttpClient())
|
||||||
|
{
|
||||||
|
var respuesta = await httpClient.GetAsync(url + "EstadoCivil");
|
||||||
|
var respuestaString = await respuesta.Content.ReadAsStringAsync();
|
||||||
|
estadosCiviles = JsonSerializer.Deserialize<List<EstadoCivilViewModel>>(respuestaString,
|
||||||
|
new JsonSerializerOptions() { PropertyNameCaseInsensitive = true });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
|
||||||
|
return estadosCiviles;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
34
TPAtesa_RecHuma/PruebaAzureAD/Servicios/GradoAcademico.cs
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
using PruebaAzureAD.Models;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace PruebaAzureAD.Servicios
|
||||||
|
{
|
||||||
|
public class GradoAcademico
|
||||||
|
{
|
||||||
|
readonly string url = "http://localhost:46647/api/";
|
||||||
|
|
||||||
|
public async Task<List<GradoAcademicoViewModel>?> ObtenerGradosAcademicos()
|
||||||
|
{
|
||||||
|
List<GradoAcademicoViewModel>? gradosAcademicos = new List<GradoAcademicoViewModel>();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (var httpClient = new HttpClient())
|
||||||
|
{
|
||||||
|
var respuesta = await httpClient.GetAsync(url + "GradoAcademico");
|
||||||
|
var respuestaString = await respuesta.Content.ReadAsStringAsync();
|
||||||
|
gradosAcademicos = JsonSerializer.Deserialize<List<GradoAcademicoViewModel>>(respuestaString,
|
||||||
|
new JsonSerializerOptions() { PropertyNameCaseInsensitive = true });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
|
||||||
|
return gradosAcademicos;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
34
TPAtesa_RecHuma/PruebaAzureAD/Servicios/Pais.cs
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
using PruebaAzureAD.Models;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace PruebaAzureAD.Servicios
|
||||||
|
{
|
||||||
|
public class Pais
|
||||||
|
{
|
||||||
|
readonly string url = "http://localhost:46647/api/";
|
||||||
|
|
||||||
|
public async Task<List<PaisViewModel>?> ObtenerPaises()
|
||||||
|
{
|
||||||
|
List<PaisViewModel>? paises = new List<PaisViewModel>();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (var httpClient = new HttpClient())
|
||||||
|
{
|
||||||
|
var respuesta = await httpClient.GetAsync(url + "Pais");
|
||||||
|
var respuestaString = await respuesta.Content.ReadAsStringAsync();
|
||||||
|
paises = JsonSerializer.Deserialize<List<PaisViewModel>>(respuestaString,
|
||||||
|
new JsonSerializerOptions() { PropertyNameCaseInsensitive = true });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
|
||||||
|
return paises;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
77
TPAtesa_RecHuma/PruebaAzureAD/Servicios/Persona.cs
Normal file
|
|
@ -0,0 +1,77 @@
|
||||||
|
using PruebaAzureAD.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Net.Http.Headers;
|
||||||
|
using System.Net.Http.Json;
|
||||||
|
using System.Text;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace PruebaAzureAD.Servicios
|
||||||
|
{
|
||||||
|
public class Persona
|
||||||
|
{
|
||||||
|
readonly string url = "http://localhost:46647/api/";
|
||||||
|
|
||||||
|
public async Task<List<PersonaViewModel>?> ObtenerPersonas()
|
||||||
|
{
|
||||||
|
List<PersonaViewModel>? personas = new List<PersonaViewModel>();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (var httpClient = new HttpClient())
|
||||||
|
{
|
||||||
|
var respuesta = await httpClient.GetAsync(url + "Persona");
|
||||||
|
var respuestaString = await respuesta.Content.ReadAsStringAsync();
|
||||||
|
personas = JsonSerializer.Deserialize<List<PersonaViewModel>>(respuestaString,
|
||||||
|
new JsonSerializerOptions() { PropertyNameCaseInsensitive = true });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
|
||||||
|
return personas;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<HttpResponseMessage> AgregarPersona(PersonaViewModel funcionario)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (funcionario != null)
|
||||||
|
{
|
||||||
|
using (var httpClient = new HttpClient())
|
||||||
|
{
|
||||||
|
var data = JsonSerializer.Serialize(funcionario);
|
||||||
|
var content = new StringContent(data, Encoding.UTF8, "application/json");
|
||||||
|
var response = await httpClient.PostAsync(url + "Persona", content);
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var response = new HttpResponseMessage(HttpStatusCode.BadRequest)
|
||||||
|
{
|
||||||
|
Content = new StringContent("Bad Request")
|
||||||
|
};
|
||||||
|
|
||||||
|
return await Task.FromResult(response);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//MODIFICAR
|
||||||
|
|
||||||
|
//ELIMINAR
|
||||||
|
}
|
||||||
|
}
|
||||||
34
TPAtesa_RecHuma/PruebaAzureAD/Servicios/Provincia.cs
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
using PruebaAzureAD.Models;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace PruebaAzureAD.Servicios
|
||||||
|
{
|
||||||
|
public class Provincia
|
||||||
|
{
|
||||||
|
readonly string url = "http://localhost:46647/api/";
|
||||||
|
|
||||||
|
public async Task<List<ProvinciaViewModel>?> ObtenerProvincias()
|
||||||
|
{
|
||||||
|
List<ProvinciaViewModel>? provincias = new List<ProvinciaViewModel>();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (var httpClient = new HttpClient())
|
||||||
|
{
|
||||||
|
var respuesta = await httpClient.GetAsync(url + "Provincia");
|
||||||
|
var respuestaString = await respuesta.Content.ReadAsStringAsync();
|
||||||
|
provincias = JsonSerializer.Deserialize<List<ProvinciaViewModel>>(respuestaString,
|
||||||
|
new JsonSerializerOptions() { PropertyNameCaseInsensitive = true });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
|
||||||
|
return provincias;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
34
TPAtesa_RecHuma/PruebaAzureAD/Servicios/Puesto.cs
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
using PruebaAzureAD.Models;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace PruebaAzureAD.Servicios
|
||||||
|
{
|
||||||
|
public class Puesto
|
||||||
|
{
|
||||||
|
readonly string url = "http://localhost:46647/api/";
|
||||||
|
|
||||||
|
public async Task<List<PuestoViewModel>?> ObtenerPuestos()
|
||||||
|
{
|
||||||
|
List<PuestoViewModel>? puestos = new List<PuestoViewModel>();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (var httpClient = new HttpClient())
|
||||||
|
{
|
||||||
|
var respuesta = await httpClient.GetAsync(url + "Puesto");
|
||||||
|
var respuestaString = await respuesta.Content.ReadAsStringAsync();
|
||||||
|
puestos = JsonSerializer.Deserialize<List<PuestoViewModel>>(respuestaString,
|
||||||
|
new JsonSerializerOptions() { PropertyNameCaseInsensitive = true });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
|
||||||
|
return puestos;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
using PruebaAzureAD.Models;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace PruebaAzureAD.Servicios
|
||||||
|
{
|
||||||
|
public class TipoIdentificacion
|
||||||
|
{
|
||||||
|
readonly string url = "http://localhost:46647/api/";
|
||||||
|
|
||||||
|
public async Task<List<TipoIdentificacionViewModel>?> ObtenerTipoIdentificaciones()
|
||||||
|
{
|
||||||
|
List<TipoIdentificacionViewModel>? identificaciones = new List<TipoIdentificacionViewModel>();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (var httpClient = new HttpClient())
|
||||||
|
{
|
||||||
|
var respuesta = await httpClient.GetAsync(url + "TipoIdentificacion");
|
||||||
|
var respuestaString = await respuesta.Content.ReadAsStringAsync();
|
||||||
|
identificaciones = JsonSerializer.Deserialize<List<TipoIdentificacionViewModel>>(respuestaString,
|
||||||
|
new JsonSerializerOptions() { PropertyNameCaseInsensitive = true });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
|
||||||
|
return identificaciones;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
34
TPAtesa_RecHuma/PruebaAzureAD/Servicios/TipoNombramiento.cs
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
using PruebaAzureAD.Models;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace PruebaAzureAD.Servicios
|
||||||
|
{
|
||||||
|
public class TipoNombramiento
|
||||||
|
{
|
||||||
|
readonly string url = "http://localhost:46647/api/";
|
||||||
|
|
||||||
|
public async Task<List<TipoNombramientoViewModel>?> ObtenerNombramientos()
|
||||||
|
{
|
||||||
|
List<TipoNombramientoViewModel>? nombramientos = new List<TipoNombramientoViewModel>();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (var httpClient = new HttpClient())
|
||||||
|
{
|
||||||
|
var respuesta = await httpClient.GetAsync(url + "TipoNombramiento");
|
||||||
|
var respuestaString = await respuesta.Content.ReadAsStringAsync();
|
||||||
|
nombramientos = JsonSerializer.Deserialize<List<TipoNombramientoViewModel>>(respuestaString,
|
||||||
|
new JsonSerializerOptions() { PropertyNameCaseInsensitive = true });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
|
||||||
|
return nombramientos;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
34
TPAtesa_RecHuma/PruebaAzureAD/Servicios/Universidad.cs
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
using PruebaAzureAD.Models;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace PruebaAzureAD.Servicios
|
||||||
|
{
|
||||||
|
public class Universidad
|
||||||
|
{
|
||||||
|
readonly string url = "http://localhost:46647/api/";
|
||||||
|
|
||||||
|
public async Task<List<UniversidadViewModel>?> ObtenerUniversidades()
|
||||||
|
{
|
||||||
|
List<UniversidadViewModel>? universidades = new List<UniversidadViewModel>();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (var httpClient = new HttpClient())
|
||||||
|
{
|
||||||
|
var respuesta = await httpClient.GetAsync(url + "Universidad");
|
||||||
|
var respuestaString = await respuesta.Content.ReadAsStringAsync();
|
||||||
|
universidades = JsonSerializer.Deserialize<List<UniversidadViewModel>>(respuestaString,
|
||||||
|
new JsonSerializerOptions() { PropertyNameCaseInsensitive = true });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
|
||||||
|
return universidades;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
227
TPAtesa_RecHuma/PruebaAzureAD/Views/Home/Agregar.cshtml
Normal file
|
|
@ -0,0 +1,227 @@
|
||||||
|
@model PruebaAzureAD.Models.PersonaViewModel
|
||||||
|
|
||||||
|
@{
|
||||||
|
List<EstadoViewModel> estados = ViewBag.Estados;
|
||||||
|
List<TipoIdentificacionViewModel> tipos = ViewBag.Tipos;
|
||||||
|
List<PaisViewModel> paises = ViewBag.Paises;
|
||||||
|
List<EstadoCivilViewModel> estadosCiviles = ViewBag.EstadosCiviles;
|
||||||
|
//List<ProvinciaViewModel> provincias = ViewBag.Provincias;
|
||||||
|
//List<CantonViewModel> cantones = ViewBag.Cantones;
|
||||||
|
//List<DistritoViewModel> distritos = ViewBag.Distritos;
|
||||||
|
List<UniversidadViewModel> universidades = ViewBag.Universidades;
|
||||||
|
List<GradoAcademicoViewModel> gradosAcademicos = ViewBag.GradosAcademicos;
|
||||||
|
List<EmpresaViewModel> empresas = ViewBag.Empresas;
|
||||||
|
List<PuestoViewModel> puestos = ViewBag.Puestos;
|
||||||
|
List<TipoNombramientoViewModel> nombramientos = ViewBag.TipoNombramiento;
|
||||||
|
}
|
||||||
|
|
||||||
|
<div class="wrapper">
|
||||||
|
<!-- Content Wrapper. Contains page content -->
|
||||||
|
<div class="content-wrapper">
|
||||||
|
<!-- Content Header (Page header) -->
|
||||||
|
<section class="content-header">
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="row mb-2">
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<h1 class="m-0">Empleados</h1>
|
||||||
|
</div><!-- /.col -->
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<ol class="breadcrumb float-right">
|
||||||
|
<li class="breadcrumb-item"><a href="#">Home</a></li>
|
||||||
|
<li class="breadcrumb-item active">Agregar Empleado</li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div><!-- /.container-fluid -->
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Main content -->
|
||||||
|
<section class="content">
|
||||||
|
<div class="container-fluid">
|
||||||
|
<!-- SELECT2 EXAMPLE -->
|
||||||
|
<div class="card card-default">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5>PERSONA</h5>
|
||||||
|
<form method="post">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="idTipoIdentificacion">Tipo de Identificación</label>
|
||||||
|
<select asp-for="IdTipoIdentificacion" class="custom-select">
|
||||||
|
<option>-- SELECCIONE --</option>
|
||||||
|
@foreach (var item in tipos)
|
||||||
|
{
|
||||||
|
<option value="@item.IdTipoIdentificacion">@item.Descripcion</option>
|
||||||
|
}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="Identificacion">Nº Identificación</label>
|
||||||
|
<input asp-for="NoIdentificacion" type="text" class="form-control" id="Identificacion" placeholder="Ingrese la Identificación" />
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="Nombre">Nombre</label>
|
||||||
|
<input asp-for="Nombre" type="text" class="form-control" id="Nombre" placeholder="Ingrese el Nombre" />
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="PrimerApellido">Primer Apellido</label>
|
||||||
|
<input asp-for="PrimerApellido" type="text" class="form-control" id="PrimerApellido" placeholder="Ingrese el Primer Apellido" />
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="SegundoApelldio">Segundo Apellido</label>
|
||||||
|
<input asp-for="SegundoApellido" type="text" class="form-control" id="SegundoApelldio" placeholder="Ingrese el Segundo Apelldio" />
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="FechaNacimiento">Fecha de Nacimiento</label>
|
||||||
|
<input asp-for="FechaNacimiento" id="FechaNacimiento" class="form-control" type="date" />
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="Nacionalidad">País Nacionalidad</label>
|
||||||
|
<select asp-for="IdPaisNacionalidad" class="custom-select">
|
||||||
|
<option>-- SELECCIONE --</option>
|
||||||
|
@foreach (var item in paises)
|
||||||
|
{
|
||||||
|
<option value="@item.IdPais">@item.Descripcion</option>
|
||||||
|
}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="EstadoCivil">Estado Civil</label>
|
||||||
|
<select asp-for="IdEstadoCivil" class="custom-select">
|
||||||
|
<option>-- SELECCIONE --</option>
|
||||||
|
@foreach (var item in estadosCiviles)
|
||||||
|
{
|
||||||
|
<option value="@item.IdEstadoCivil">@item.Descripcion</option>
|
||||||
|
}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="Direccion">Dirección Exacta</label>
|
||||||
|
<textarea asp-for="Direccion" id="Direccion" class="form-control" placeholder="Ingrese la Dirección" style="resize:none"></textarea>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="Correo">Correo</label>
|
||||||
|
<input asp-for="Correo" type="text" class="form-control" id="Correo" placeholder="Ingrese el Correo" />
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="IdUniversidad">Universidad</label>
|
||||||
|
<select asp-for="IdUniversidad" class="custom-select">
|
||||||
|
<option>-- SELECCIONE --</option>
|
||||||
|
@foreach (var item in universidades)
|
||||||
|
{
|
||||||
|
<option value="@item.IdUniversidad">@item.Descripcion</option>
|
||||||
|
}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="IdGradoAcademico">Grado Academico</label>
|
||||||
|
<select asp-for="IdGradoAcademico" class="custom-select">
|
||||||
|
<option>-- SELECCIONE --</option>
|
||||||
|
@foreach (var item in gradosAcademicos)
|
||||||
|
{
|
||||||
|
<option value="@item.IdGradoAcademico">@item.Descripcion</option>
|
||||||
|
}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /.col -->
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="Titulo">Titulo</label>
|
||||||
|
<input asp-for="Titulo" type="text" class="form-control" id="Titulo" placeholder="Ingrese el Titulo" />
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="IdEmpresa">Empresa</label>
|
||||||
|
<select asp-for="IdEmpresa" class="custom-select">
|
||||||
|
<option>-- SELECCIONE --</option>
|
||||||
|
@foreach (var item in empresas)
|
||||||
|
{
|
||||||
|
<option value="@item.IdEmpresa">@item.Nombre</option>
|
||||||
|
}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="IdPuesto">Puesto</label>
|
||||||
|
<select asp-for="IdPuesto" class="custom-select">
|
||||||
|
<option>-- SELECCIONE --</option>
|
||||||
|
@foreach (var item in puestos)
|
||||||
|
{
|
||||||
|
<option value="@item.IdPuesto">@item.Descripcion</option>
|
||||||
|
}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="IdTipoNombramiento">Tipo Nombramiento</label>
|
||||||
|
<select asp-for="IdTipoNombramiento" class="custom-select">
|
||||||
|
<option>-- SELECCIONE --</option>
|
||||||
|
@foreach (var item in nombramientos)
|
||||||
|
{
|
||||||
|
<option value="@item.IdTipoNombramiento">@item.Descripcion</option>
|
||||||
|
}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="FechaIngreso">Fecha de Ingreso</label>
|
||||||
|
<input asp-for="FechaIngreso" id="FechaIngreso" class="form-control" type="date" />
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="FechaAscenso">Fecha de Ascenso</label>
|
||||||
|
<input asp-for="FechaAscenso" id="FechaAscenso" class="form-control" type="date" />
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="FechaSalida">Fecha de Salida</label>
|
||||||
|
<input asp-for="FechaSalida" id="FechaSalida" class="form-control" type="date" />
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="SalarioBruto">Salario Bruto</label>
|
||||||
|
<input asp-for="SalarioBruto" type="text" class="form-control" id="SalarioBruto" placeholder="Ingrese el Salario Bruto" />
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="TelefonoPrincipal">Telefono Principal</label>
|
||||||
|
<input asp-for="TelefonoPrincipal" type="text" class="form-control" id="TelefonoPrincipal" placeholder="Ingrese el Telefono Principal" />
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="TelefonoSecundario">Telefono Secundario</label>
|
||||||
|
<input asp-for="TelefonoSecundario" type="text" class="form-control" id="TelefonoSecundario" placeholder="Ingrese el Telefono Secundario" />
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="IdEstado">Estado</label>
|
||||||
|
<select asp-for="IdEstado" class="custom-select">
|
||||||
|
<option>-- SELECCIONE --</option>
|
||||||
|
@foreach (var item in estados)
|
||||||
|
{
|
||||||
|
<option value="@item.IdEstado">@item.Descripcion</option>
|
||||||
|
}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<!-- /.form-group -->
|
||||||
|
</div>
|
||||||
|
<!-- /.col -->
|
||||||
|
</div>
|
||||||
|
<!-- /.row -->
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12 col-sm-6">
|
||||||
|
<!-- /.form-group -->
|
||||||
|
</div>
|
||||||
|
<!-- /.col -->
|
||||||
|
<div class="col-12 col-sm-6">
|
||||||
|
<!-- /.form-group -->
|
||||||
|
</div>
|
||||||
|
<!-- /.col -->
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btn btn-success" asp-action="Agregar">Guardar</button>
|
||||||
|
</form>
|
||||||
|
<!-- /.row -->
|
||||||
|
</div>
|
||||||
|
<!-- /.card-body -->
|
||||||
|
</div>
|
||||||
|
<!-- /.card -->
|
||||||
|
</div>
|
||||||
|
<!-- /.container-fluid -->
|
||||||
|
</section>
|
||||||
|
<!-- /.content -->
|
||||||
|
</div>
|
||||||
|
<!-- /.content-wrapper -->
|
||||||
|
</div>
|
||||||
|
<!-- ./wrapper -->
|
||||||
113
TPAtesa_RecHuma/PruebaAzureAD/Views/Home/Index.cshtml
Normal file
|
|
@ -0,0 +1,113 @@
|
||||||
|
@{
|
||||||
|
ViewData["Title"] = "Home Page";
|
||||||
|
}
|
||||||
|
|
||||||
|
<!-- Content Wrapper. Contains page content -->
|
||||||
|
<div class="content-wrapper">
|
||||||
|
<!-- Content Header (Page header) -->
|
||||||
|
<div class="content-header">
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="row mb-2">
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<h1 class="m-0">Starter Page</h1>
|
||||||
|
</div><!-- /.col -->
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<ol class="breadcrumb float-sm-right">
|
||||||
|
<li class="breadcrumb-item"><a href="#">Home</a></li>
|
||||||
|
<li class="breadcrumb-item active">Starter Page</li>
|
||||||
|
</ol>
|
||||||
|
</div><!-- /.col -->
|
||||||
|
</div><!-- /.row -->
|
||||||
|
</div><!-- /.container-fluid -->
|
||||||
|
</div>
|
||||||
|
<!-- /.content-header -->
|
||||||
|
<!-- Main content -->
|
||||||
|
<div class="content">
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="row">
|
||||||
|
<!-- /.col-md-6 -->
|
||||||
|
<div class="col-12">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header">
|
||||||
|
<h3 class="card-title">Empleados</h3>
|
||||||
|
</div>
|
||||||
|
<!-- /.card-header -->
|
||||||
|
<div class="card-body">
|
||||||
|
<div id="example1_wrapper" class="dataTables_wrapper dt-bootstrap4">
|
||||||
|
<div class="row">
|
||||||
|
|
||||||
|
<a class="btn btn-sm btn-success float-left" asp-action="Agregar"><i class="fas fa-plus"></i> Agregar Empleado</a>
|
||||||
|
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<table id="example1" class="table table-bordered table-striped dataTable dtr-inline" aria-describedby="example1_info">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
@* <th class="sorting" tabindex="0" aria-controls="example1" rowspan="1" colspan="1">IdPersona</th>
|
||||||
|
<th class="sorting sorting_desc" tabindex="0" aria-controls="example1" rowspan="1" colspan="1" aria-sort="descending">IdTipoIdentificacion</th>*@
|
||||||
|
<th class="sorting" tabindex="0" aria-controls="example1" rowspan="1" colspan="1">NoIdentificacion</th>
|
||||||
|
<th class="sorting" tabindex="0" aria-controls="example1" rowspan="1" colspan="1">Nombre</th>
|
||||||
|
<th class="sorting" tabindex="0" aria-controls="example1" rowspan="1" colspan="1">PrimerApellido</th>
|
||||||
|
<th class="sorting" tabindex="0" aria-controls="example1" rowspan="1" colspan="1">SegundoApellido</th>
|
||||||
|
<th class="sorting" tabindex="0" aria-controls="example1" rowspan="1" colspan="1">FechaNacimiento</th>
|
||||||
|
@* <th class="sorting" tabindex="0" aria-controls="example1" rowspan="1" colspan="1">IdPaisNacionalidad</th>
|
||||||
|
<th class="sorting" tabindex="0" aria-controls="example1" rowspan="1" colspan="1">IdEstadoCivil</th>
|
||||||
|
<th class="sorting" tabindex="0" aria-controls="example1" rowspan="1" colspan="1">IdEstado</th>*@
|
||||||
|
<th class="sorting" tabindex="0" aria-controls="example1" rowspan="1" colspan="1">Acciones</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach (var funcionario in Model)
|
||||||
|
{
|
||||||
|
<tr class="odd">
|
||||||
|
@*<td class="dtr-control" tabindex="0">@funcionario.IdPersona</td>
|
||||||
|
<td class="sorting_1">@funcionario.IdTipoIdentificacion</td>*@
|
||||||
|
<td class="">@funcionario.NoIdentificacion</td>
|
||||||
|
<td class="">@funcionario.Nombre</td>
|
||||||
|
<td class="">@funcionario.PrimerApellido</td>
|
||||||
|
<td class="">@funcionario.SegundoApellido</td>
|
||||||
|
<td class="">@funcionario.FechaNacimiento</td>
|
||||||
|
@*<td class="">@funcionario.IdPaisNacionalidad</td>
|
||||||
|
<td class="">@funcionario.IdEstadoCivil</td>
|
||||||
|
<td class="">@funcionario.IdEstado</td>*@
|
||||||
|
<td>
|
||||||
|
<a class="btn btn-sm bg-danger">
|
||||||
|
<i class="fas fa-trash"></i>
|
||||||
|
</a>
|
||||||
|
<a class="btn btn-sm bg-info">
|
||||||
|
<i class="fas fa-pen"></i>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
}
|
||||||
|
</tbody>
|
||||||
|
<tfoot>
|
||||||
|
<tr>
|
||||||
|
@*<th rowspan="1" colspan="1">IdPersona</th>
|
||||||
|
<th rowspan="1" colspan="1">IdTipoIdentificacion</th>*@
|
||||||
|
<th rowspan="1" colspan="1">NoIdentificacion</th>
|
||||||
|
<th rowspan="1" colspan="1">Nombre</th>
|
||||||
|
<th rowspan="1" colspan="1">PrimerApellido</th>
|
||||||
|
<th rowspan="1" colspan="1">SegundoApellido</th>
|
||||||
|
<th rowspan="1" colspan="1">FechaNacimiento</th>
|
||||||
|
@*<th rowspan="1" colspan="1">IdPaisNacionalidad</th>
|
||||||
|
<th rowspan="1" colspan="1">IdEstadoCivil</th>
|
||||||
|
<th rowspan="1" colspan="1">IdEstado</th>*@
|
||||||
|
<th rowspan="1" colspan="1">Acciones</th>
|
||||||
|
</tr>
|
||||||
|
</tfoot>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /.card-body -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /.col-md-6 -->
|
||||||
|
</div>
|
||||||
|
<!-- /.row -->
|
||||||
|
</div><!-- /.container-fluid -->
|
||||||
|
</div>
|
||||||
|
<!-- /.content -->
|
||||||
|
</div>
|
||||||
|
<!-- /.content-wrapper -->
|
||||||
6
TPAtesa_RecHuma/PruebaAzureAD/Views/Home/Privacy.cshtml
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
@{
|
||||||
|
ViewData["Title"] = "Privacy Policy";
|
||||||
|
}
|
||||||
|
<h1>@ViewData["Title"]</h1>
|
||||||
|
|
||||||
|
<p>Use this page to detail your site's privacy policy.</p>
|
||||||
25
TPAtesa_RecHuma/PruebaAzureAD/Views/Shared/Error.cshtml
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
@model ErrorViewModel
|
||||||
|
@{
|
||||||
|
ViewData["Title"] = "Error";
|
||||||
|
}
|
||||||
|
|
||||||
|
<h1 class="text-danger">Error.</h1>
|
||||||
|
<h2 class="text-danger">An error occurred while processing your request.</h2>
|
||||||
|
|
||||||
|
@if (Model?.ShowRequestId ?? false)
|
||||||
|
{
|
||||||
|
<p>
|
||||||
|
<strong>Request ID:</strong> <code>@Model?.RequestId</code>
|
||||||
|
</p>
|
||||||
|
}
|
||||||
|
|
||||||
|
<h3>Development Mode</h3>
|
||||||
|
<p>
|
||||||
|
Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<strong>The Development environment shouldn't be enabled for deployed applications.</strong>
|
||||||
|
It can result in displaying sensitive information from exceptions to end users.
|
||||||
|
For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
|
||||||
|
and restarting the app.
|
||||||
|
</p>
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
<footer class="main-footer">
|
||||||
|
<!-- To the right -->
|
||||||
|
<div class="float-right d-none d-sm-inline">
|
||||||
|
Anything you want
|
||||||
|
</div>
|
||||||
|
<!-- Default to the left -->
|
||||||
|
<strong>Copyright © 2014-2021 <a href="https://adminlte.io">AdminLTE.io</a>.</strong> All rights reserved.
|
||||||
|
</footer>
|
||||||
79
TPAtesa_RecHuma/PruebaAzureAD/Views/Shared/_Layout.cshtml
Normal file
|
|
@ -0,0 +1,79 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>@ViewData["Title"] - PruebaAzureAD</title>
|
||||||
|
|
||||||
|
<!-- Google Font: Source Sans Pro -->
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback">
|
||||||
|
<!-- Font Awesome Icons -->
|
||||||
|
<link rel="stylesheet" href="~/adminlte/plugins/fontawesome-free/css/all.min.css">
|
||||||
|
<!-- Theme style -->
|
||||||
|
<link rel="stylesheet" href="~/adminlte/dist/css/adminlte.min.css">
|
||||||
|
|
||||||
|
<!-- DataTables -->
|
||||||
|
<link rel="stylesheet" href="~/adminlte/plugins/datatables-bs4/css/dataTables.bootstrap4.min.css">
|
||||||
|
<link rel="stylesheet" href="~/adminlte/plugins/datatables-responsive/css/responsive.bootstrap4.min.css">
|
||||||
|
<link rel="stylesheet" href="~/adminlte/plugins/datatables-buttons/css/buttons.bootstrap4.min.css">
|
||||||
|
|
||||||
|
<!-- daterange picker -->
|
||||||
|
<link rel="stylesheet" href="~/adminlte/plugins/daterangepicker/daterangepicker.css">
|
||||||
|
|
||||||
|
@await RenderSectionAsync("Styles", required: false)
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body class="hold-transition sidebar-mini">
|
||||||
|
<div class="wrapper">
|
||||||
|
|
||||||
|
<partial name="_Navbar" />
|
||||||
|
<partial name="_Sidebar" />
|
||||||
|
|
||||||
|
@RenderBody()
|
||||||
|
|
||||||
|
<partial name="_Footer" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- REQUIRED SCRIPTS -->
|
||||||
|
<!-- jQuery -->
|
||||||
|
<script src="~/adminlte/plugins/jquery/jquery.min.js"></script>
|
||||||
|
<!-- Bootstrap 4 -->
|
||||||
|
<script src="~/adminlte/plugins/bootstrap/js/bootstrap.bundle.min.js"></script>
|
||||||
|
<!-- AdminLTE App -->
|
||||||
|
<script src="~/adminlte/dist/js/adminlte.min.js"></script>
|
||||||
|
|
||||||
|
<!-- DataTables & Plugins -->
|
||||||
|
<script src="~/adminlte/plugins/datatables/jquery.dataTables.min.js"></script>
|
||||||
|
<script src="~/adminlte/plugins/datatables-bs4/js/dataTables.bootstrap4.min.js"></script>
|
||||||
|
<script src="~/adminlte/plugins/datatables-responsive/js/dataTables.responsive.min.js"></script>
|
||||||
|
<script src="~/adminlte/plugins/datatables-responsive/js/responsive.bootstrap4.min.js"></script>
|
||||||
|
<script src="~/adminlte/plugins/datatables-buttons/js/dataTables.buttons.min.js"></script>
|
||||||
|
<script src="~/adminlte/plugins/datatables-buttons/js/buttons.bootstrap4.min.js"></script>
|
||||||
|
<script src="~/adminlte/plugins/datatables-buttons/js/buttons.html5.min.js"></script>
|
||||||
|
<script src="~/adminlte/plugins/datatables-buttons/js/buttons.print.min.js"></script>
|
||||||
|
<script src="~/adminlte/plugins/datatables-buttons/js/buttons.colVis.min.js"></script>
|
||||||
|
|
||||||
|
<script src="~/adminlte/plugins/daterangepicker/daterangepicker.js"></script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
$(function () {
|
||||||
|
$("#example1").DataTable({
|
||||||
|
"responsive": true, "lengthChange": false, "autoWidth": false
|
||||||
|
//"buttons": ["copy", "csv", "excel", "pdf", "print", "colvis"]
|
||||||
|
}).buttons().container().appendTo('#example1_wrapper .col-md-6:eq(0)');
|
||||||
|
$('#example2').DataTable({
|
||||||
|
"paging": true,
|
||||||
|
"lengthChange": false,
|
||||||
|
"searching": false,
|
||||||
|
"ordering": true,
|
||||||
|
"info": true,
|
||||||
|
"autoWidth": false,
|
||||||
|
"responsive": true,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
@await RenderSectionAsync("Scripts", required: false)
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,48 @@
|
||||||
|
/* Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification
|
||||||
|
for details on configuring this project to bundle and minify static web assets. */
|
||||||
|
|
||||||
|
a.navbar-brand {
|
||||||
|
white-space: normal;
|
||||||
|
text-align: center;
|
||||||
|
word-break: break-all;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #0077cc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-primary {
|
||||||
|
color: #fff;
|
||||||
|
background-color: #1b6ec2;
|
||||||
|
border-color: #1861ac;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-pills .nav-link.active, .nav-pills .show > .nav-link {
|
||||||
|
color: #fff;
|
||||||
|
background-color: #1b6ec2;
|
||||||
|
border-color: #1861ac;
|
||||||
|
}
|
||||||
|
|
||||||
|
.border-top {
|
||||||
|
border-top: 1px solid #e5e5e5;
|
||||||
|
}
|
||||||
|
.border-bottom {
|
||||||
|
border-bottom: 1px solid #e5e5e5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-shadow {
|
||||||
|
box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .05);
|
||||||
|
}
|
||||||
|
|
||||||
|
button.accept-policy {
|
||||||
|
font-size: 1rem;
|
||||||
|
line-height: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
width: 100%;
|
||||||
|
white-space: nowrap;
|
||||||
|
line-height: 60px;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
@using System.Security.Principal
|
||||||
|
|
||||||
|
<ul class="navbar-nav">
|
||||||
|
@if (User.Identity?.IsAuthenticated == true)
|
||||||
|
{
|
||||||
|
<span class="navbar-text text-dark">Bienvenido <b>@User.Identity?.Name!</b></span>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link text-dark" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignOut">Cerrar sesión</a>
|
||||||
|
</li>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link text-dark" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignIn">Iniciar sesión</a>
|
||||||
|
</li>
|
||||||
|
}
|
||||||
|
</ul>
|
||||||
136
TPAtesa_RecHuma/PruebaAzureAD/Views/Shared/_Navbar.cshtml
Normal file
|
|
@ -0,0 +1,136 @@
|
||||||
|
<nav class="main-header navbar navbar-expand navbar-white navbar-light">
|
||||||
|
<!-- Left navbar links -->
|
||||||
|
<ul class="navbar-nav">
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" data-widget="pushmenu" href="#" role="button"><i class="fas fa-bars"></i></a>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item d-none d-sm-inline-block">
|
||||||
|
<a asp-action="Index" class="nav-link">Home</a>
|
||||||
|
</li>
|
||||||
|
@* <li class="nav-item d-none d-sm-inline-block">
|
||||||
|
<a href="#" class="nav-link">Contact</a>
|
||||||
|
</li>*@
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<!-- Right navbar links -->
|
||||||
|
<ul class="navbar-nav ml-auto">
|
||||||
|
<partial name = "_LoginPartial" />
|
||||||
|
<!-- Navbar Search -->
|
||||||
|
@* <li class="nav-item">
|
||||||
|
<a class="nav-link" data-widget="navbar-search" href="#" role="button">
|
||||||
|
<i class="fas fa-search"></i>
|
||||||
|
</a>
|
||||||
|
<div class="navbar-search-block">
|
||||||
|
<form class="form-inline">
|
||||||
|
<div class="input-group input-group-sm">
|
||||||
|
<input class="form-control form-control-navbar" type="search" placeholder="Search" aria-label="Search">
|
||||||
|
<div class="input-group-append">
|
||||||
|
<button class="btn btn-navbar" type="submit">
|
||||||
|
<i class="fas fa-search"></i>
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-navbar" type="button" data-widget="navbar-search">
|
||||||
|
<i class="fas fa-times"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</li>*@
|
||||||
|
|
||||||
|
<!-- Messages Dropdown Menu -->
|
||||||
|
@* <li class="nav-item dropdown">
|
||||||
|
<a class="nav-link" data-toggle="dropdown" href="#">
|
||||||
|
<i class="far fa-comments"></i>
|
||||||
|
<span class="badge badge-danger navbar-badge">3</span>
|
||||||
|
</a>
|
||||||
|
<div class="dropdown-menu dropdown-menu-lg dropdown-menu-right">
|
||||||
|
<a href="#" class="dropdown-item">
|
||||||
|
<!-- Message Start -->
|
||||||
|
<div class="media">
|
||||||
|
<img src="~/adminlte/dist/img/user1-128x128.jpg" alt="User Avatar" class="img-size-50 mr-3 img-circle">
|
||||||
|
<div class="media-body">
|
||||||
|
<h3 class="dropdown-item-title">
|
||||||
|
Brad Diesel
|
||||||
|
<span class="float-right text-sm text-danger"><i class="fas fa-star"></i></span>
|
||||||
|
</h3>
|
||||||
|
<p class="text-sm">Call me whenever you can...</p>
|
||||||
|
<p class="text-sm text-muted"><i class="far fa-clock mr-1"></i> 4 Hours Ago</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Message End -->
|
||||||
|
</a>
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
<a href="#" class="dropdown-item">
|
||||||
|
<!-- Message Start -->
|
||||||
|
<div class="media">
|
||||||
|
<img src="~/adminlte/dist/img/user8-128x128.jpg" alt="User Avatar" class="img-size-50 img-circle mr-3">
|
||||||
|
<div class="media-body">
|
||||||
|
<h3 class="dropdown-item-title">
|
||||||
|
John Pierce
|
||||||
|
<span class="float-right text-sm text-muted"><i class="fas fa-star"></i></span>
|
||||||
|
</h3>
|
||||||
|
<p class="text-sm">I got your message bro</p>
|
||||||
|
<p class="text-sm text-muted"><i class="far fa-clock mr-1"></i> 4 Hours Ago</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Message End -->
|
||||||
|
</a>
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
<a href="#" class="dropdown-item">
|
||||||
|
<!-- Message Start -->
|
||||||
|
<div class="media">
|
||||||
|
<img src="~/adminlte/dist/img/user3-128x128.jpg" alt="User Avatar" class="img-size-50 img-circle mr-3">
|
||||||
|
<div class="media-body">
|
||||||
|
<h3 class="dropdown-item-title">
|
||||||
|
Nora Silvester
|
||||||
|
<span class="float-right text-sm text-warning"><i class="fas fa-star"></i></span>
|
||||||
|
</h3>
|
||||||
|
<p class="text-sm">The subject goes here</p>
|
||||||
|
<p class="text-sm text-muted"><i class="far fa-clock mr-1"></i> 4 Hours Ago</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Message End -->
|
||||||
|
</a>
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
<a href="#" class="dropdown-item dropdown-footer">See All Messages</a>
|
||||||
|
</div>
|
||||||
|
</li>*@
|
||||||
|
<!-- Notifications Dropdown Menu -->
|
||||||
|
@* <li class="nav-item dropdown">
|
||||||
|
<a class="nav-link" data-toggle="dropdown" href="#">
|
||||||
|
<i class="far fa-bell"></i>
|
||||||
|
<span class="badge badge-warning navbar-badge">15</span>
|
||||||
|
</a>
|
||||||
|
<div class="dropdown-menu dropdown-menu-lg dropdown-menu-right">
|
||||||
|
<span class="dropdown-header">15 Notifications</span>
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
<a href="#" class="dropdown-item">
|
||||||
|
<i class="fas fa-envelope mr-2"></i> 4 new messages
|
||||||
|
<span class="float-right text-muted text-sm">3 mins</span>
|
||||||
|
</a>
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
<a href="#" class="dropdown-item">
|
||||||
|
<i class="fas fa-users mr-2"></i> 8 friend requests
|
||||||
|
<span class="float-right text-muted text-sm">12 hours</span>
|
||||||
|
</a>
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
<a href="#" class="dropdown-item">
|
||||||
|
<i class="fas fa-file mr-2"></i> 3 new reports
|
||||||
|
<span class="float-right text-muted text-sm">2 days</span>
|
||||||
|
</a>
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
<a href="#" class="dropdown-item dropdown-footer">See All Notifications</a>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" data-widget="fullscreen" href="#" role="button">
|
||||||
|
<i class="fas fa-expand-arrows-alt"></i>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" data-widget="control-sidebar" data-slide="true" href="#" role="button">
|
||||||
|
<i class="fas fa-th-large"></i>
|
||||||
|
</a>
|
||||||
|
</li>*@
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
59
TPAtesa_RecHuma/PruebaAzureAD/Views/Shared/_Sidebar.cshtml
Normal file
|
|
@ -0,0 +1,59 @@
|
||||||
|
<aside class="main-sidebar sidebar-dark-primary elevation-4" style="background-color: #B0302F">
|
||||||
|
<!-- Brand Logo -->
|
||||||
|
<a href="index3.html" class="brand-link">
|
||||||
|
<img src="~/adminlte/dist/img/AdminLTELogo.png" alt="AdminLTE Logo" class="brand-image img-circle elevation-3" style="opacity: .8">
|
||||||
|
<span class="brand-text font-weight-light">RECHUMA</span>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<!-- Sidebar -->
|
||||||
|
<div class="sidebar">
|
||||||
|
<!-- Sidebar user panel (optional) -->
|
||||||
|
<div class="user-panel mt-3 pb-3 mb-3 d-flex">
|
||||||
|
<div class="image">
|
||||||
|
<img src="~/adminlte/dist/img/user2-160x160.jpg" class="img-circle elevation-2" alt="User Image">
|
||||||
|
</div>
|
||||||
|
<div class="info">
|
||||||
|
<a href="#" class="d-block">Alexander Pierce</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- SidebarSearch Form -->
|
||||||
|
<div class="form-inline">
|
||||||
|
<div class="input-group" data-widget="sidebar-search">
|
||||||
|
<input class="form-control form-control-sidebar" type="search" placeholder="Search" aria-label="Search">
|
||||||
|
<div class="input-group-append">
|
||||||
|
<button class="btn btn-sidebar">
|
||||||
|
<i class="fas fa-search fa-fw"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Sidebar Menu -->
|
||||||
|
<nav class="mt-2">
|
||||||
|
<ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu" data-accordion="false">
|
||||||
|
<!-- Add icons to the links using the .nav-icon class
|
||||||
|
with font-awesome or any other icon font library -->
|
||||||
|
<li class="nav-item">
|
||||||
|
<a asp-action="Index" class="nav-link active">
|
||||||
|
<i class="nav-icon fas fa-tachometer-alt"></i>
|
||||||
|
<p>
|
||||||
|
Dashboard
|
||||||
|
</p>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a href="#" class="nav-link active">
|
||||||
|
<i class="nav-icon far fa-calendar-alt"></i>
|
||||||
|
<p>
|
||||||
|
Vacaciones
|
||||||
|
<span class="badge badge-info right">2</span>
|
||||||
|
</p>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
<!-- /.sidebar-menu -->
|
||||||
|
</div>
|
||||||
|
<!-- /.sidebar -->
|
||||||
|
</aside>
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
|
||||||
|
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
|
||||||
3
TPAtesa_RecHuma/PruebaAzureAD/Views/_ViewImports.cshtml
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
@using PruebaAzureAD
|
||||||
|
@using PruebaAzureAD.Models
|
||||||
|
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
|
||||||
3
TPAtesa_RecHuma/PruebaAzureAD/Views/_ViewStart.cshtml
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
@{
|
||||||
|
Layout = "_Layout";
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"Logging": {
|
||||||
|
"LogLevel": {
|
||||||
|
"Default": "Information",
|
||||||
|
"Microsoft.AspNetCore": "Warning"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
24
TPAtesa_RecHuma/PruebaAzureAD/appsettings.json
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
The following identity settings need to be configured
|
||||||
|
before the project can be successfully executed.
|
||||||
|
For more info see https://aka.ms/dotnet-template-ms-identity-platform
|
||||||
|
*/
|
||||||
|
// "UsePkce": true,
|
||||||
|
// "ResponseType": "code"
|
||||||
|
"AzureAd": {
|
||||||
|
"Instance": "https://login.microsoftonline.com/",
|
||||||
|
"Domain": "atesacr.com",
|
||||||
|
"TenantId": "ea91ca3b-96d0-4a0a-8e68-e99a3c95054d",
|
||||||
|
"ClientId": "8ea07777-c3e4-4b6e-ae03-aa2a923d3d8e",
|
||||||
|
"CallbackPath": "/signin-oidc"
|
||||||
|
},
|
||||||
|
"Logging": {
|
||||||
|
"LogLevel": {
|
||||||
|
"Default": "Information",
|
||||||
|
"Microsoft.AspNetCore": "Warning"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Url": "http://localhost:46647/api/",
|
||||||
|
"AllowedHosts": "*"
|
||||||
|
}
|
||||||
53012
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/css/adminlte.css
vendored
Normal file
1
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/css/adminlte.css.map
vendored
Normal file
12
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/css/adminlte.min.css
vendored
Normal file
1
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/css/adminlte.min.css.map
vendored
Normal file
12194
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/css/alt/adminlte.components.css
vendored
Normal file
1
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/css/alt/adminlte.components.css.map
vendored
Normal file
8
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/css/alt/adminlte.components.min.css
vendored
Normal file
1
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/css/alt/adminlte.components.min.css.map
vendored
Normal file
29991
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/css/alt/adminlte.core.css
vendored
Normal file
1
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/css/alt/adminlte.core.css.map
vendored
Normal file
13
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/css/alt/adminlte.core.min.css
vendored
Normal file
1
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/css/alt/adminlte.core.min.css.map
vendored
Normal file
1756
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/css/alt/adminlte.extra-components.css
vendored
Normal file
36864
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/css/alt/adminlte.light.css
vendored
Normal file
1
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/css/alt/adminlte.light.css.map
vendored
Normal file
18
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/css/alt/adminlte.light.min.css
vendored
Normal file
1
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/css/alt/adminlte.light.min.css.map
vendored
Normal file
960
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/css/alt/adminlte.pages.css
vendored
Normal file
|
|
@ -0,0 +1,960 @@
|
||||||
|
/*!
|
||||||
|
* AdminLTE v3.2.0
|
||||||
|
* Only Pages
|
||||||
|
* Author: Colorlib
|
||||||
|
* Website: AdminLTE.io <https://adminlte.io>
|
||||||
|
* License: Open source - MIT <https://opensource.org/licenses/MIT>
|
||||||
|
*/
|
||||||
|
.close, .mailbox-attachment-close {
|
||||||
|
float: right;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
font-weight: 700;
|
||||||
|
line-height: 1;
|
||||||
|
color: #000;
|
||||||
|
text-shadow: 0 1px 0 #fff;
|
||||||
|
opacity: .5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.close:hover, .mailbox-attachment-close:hover {
|
||||||
|
color: #000;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.close:not(:disabled):not(.disabled):hover, .mailbox-attachment-close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus, .mailbox-attachment-close:not(:disabled):not(.disabled):focus {
|
||||||
|
opacity: .75;
|
||||||
|
}
|
||||||
|
|
||||||
|
button.close, button.mailbox-attachment-close {
|
||||||
|
padding: 0;
|
||||||
|
background-color: transparent;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.close.disabled, a.disabled.mailbox-attachment-close {
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes flipInX {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
|
||||||
|
transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
|
||||||
|
transition-timing-function: ease-in;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
40% {
|
||||||
|
-webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
|
||||||
|
transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
|
||||||
|
transition-timing-function: ease-in;
|
||||||
|
}
|
||||||
|
60% {
|
||||||
|
-webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
|
||||||
|
transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
80% {
|
||||||
|
-webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
|
||||||
|
transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
-webkit-transform: perspective(400px);
|
||||||
|
transform: perspective(400px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes flipInX {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
|
||||||
|
transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
|
||||||
|
transition-timing-function: ease-in;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
40% {
|
||||||
|
-webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
|
||||||
|
transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
|
||||||
|
transition-timing-function: ease-in;
|
||||||
|
}
|
||||||
|
60% {
|
||||||
|
-webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
|
||||||
|
transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
80% {
|
||||||
|
-webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
|
||||||
|
transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
-webkit-transform: perspective(400px);
|
||||||
|
transform: perspective(400px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes fadeIn {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes fadeIn {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes fadeOut {
|
||||||
|
from {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes fadeOut {
|
||||||
|
from {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes shake {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: translate(2px, 1px) rotate(0deg);
|
||||||
|
transform: translate(2px, 1px) rotate(0deg);
|
||||||
|
}
|
||||||
|
10% {
|
||||||
|
-webkit-transform: translate(-1px, -2px) rotate(-2deg);
|
||||||
|
transform: translate(-1px, -2px) rotate(-2deg);
|
||||||
|
}
|
||||||
|
20% {
|
||||||
|
-webkit-transform: translate(-3px, 0) rotate(3deg);
|
||||||
|
transform: translate(-3px, 0) rotate(3deg);
|
||||||
|
}
|
||||||
|
30% {
|
||||||
|
-webkit-transform: translate(0, 2px) rotate(0deg);
|
||||||
|
transform: translate(0, 2px) rotate(0deg);
|
||||||
|
}
|
||||||
|
40% {
|
||||||
|
-webkit-transform: translate(1px, -1px) rotate(1deg);
|
||||||
|
transform: translate(1px, -1px) rotate(1deg);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
-webkit-transform: translate(-1px, 2px) rotate(-1deg);
|
||||||
|
transform: translate(-1px, 2px) rotate(-1deg);
|
||||||
|
}
|
||||||
|
60% {
|
||||||
|
-webkit-transform: translate(-3px, 1px) rotate(0deg);
|
||||||
|
transform: translate(-3px, 1px) rotate(0deg);
|
||||||
|
}
|
||||||
|
70% {
|
||||||
|
-webkit-transform: translate(2px, 1px) rotate(-2deg);
|
||||||
|
transform: translate(2px, 1px) rotate(-2deg);
|
||||||
|
}
|
||||||
|
80% {
|
||||||
|
-webkit-transform: translate(-1px, -1px) rotate(4deg);
|
||||||
|
transform: translate(-1px, -1px) rotate(4deg);
|
||||||
|
}
|
||||||
|
90% {
|
||||||
|
-webkit-transform: translate(2px, 2px) rotate(0deg);
|
||||||
|
transform: translate(2px, 2px) rotate(0deg);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
-webkit-transform: translate(1px, -2px) rotate(-1deg);
|
||||||
|
transform: translate(1px, -2px) rotate(-1deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes shake {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: translate(2px, 1px) rotate(0deg);
|
||||||
|
transform: translate(2px, 1px) rotate(0deg);
|
||||||
|
}
|
||||||
|
10% {
|
||||||
|
-webkit-transform: translate(-1px, -2px) rotate(-2deg);
|
||||||
|
transform: translate(-1px, -2px) rotate(-2deg);
|
||||||
|
}
|
||||||
|
20% {
|
||||||
|
-webkit-transform: translate(-3px, 0) rotate(3deg);
|
||||||
|
transform: translate(-3px, 0) rotate(3deg);
|
||||||
|
}
|
||||||
|
30% {
|
||||||
|
-webkit-transform: translate(0, 2px) rotate(0deg);
|
||||||
|
transform: translate(0, 2px) rotate(0deg);
|
||||||
|
}
|
||||||
|
40% {
|
||||||
|
-webkit-transform: translate(1px, -1px) rotate(1deg);
|
||||||
|
transform: translate(1px, -1px) rotate(1deg);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
-webkit-transform: translate(-1px, 2px) rotate(-1deg);
|
||||||
|
transform: translate(-1px, 2px) rotate(-1deg);
|
||||||
|
}
|
||||||
|
60% {
|
||||||
|
-webkit-transform: translate(-3px, 1px) rotate(0deg);
|
||||||
|
transform: translate(-3px, 1px) rotate(0deg);
|
||||||
|
}
|
||||||
|
70% {
|
||||||
|
-webkit-transform: translate(2px, 1px) rotate(-2deg);
|
||||||
|
transform: translate(2px, 1px) rotate(-2deg);
|
||||||
|
}
|
||||||
|
80% {
|
||||||
|
-webkit-transform: translate(-1px, -1px) rotate(4deg);
|
||||||
|
transform: translate(-1px, -1px) rotate(4deg);
|
||||||
|
}
|
||||||
|
90% {
|
||||||
|
-webkit-transform: translate(2px, 2px) rotate(0deg);
|
||||||
|
transform: translate(2px, 2px) rotate(0deg);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
-webkit-transform: translate(1px, -2px) rotate(-1deg);
|
||||||
|
transform: translate(1px, -2px) rotate(-1deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes wobble {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: none;
|
||||||
|
transform: none;
|
||||||
|
}
|
||||||
|
15% {
|
||||||
|
-webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
|
||||||
|
transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
|
||||||
|
}
|
||||||
|
30% {
|
||||||
|
-webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
|
||||||
|
transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
|
||||||
|
}
|
||||||
|
45% {
|
||||||
|
-webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
|
||||||
|
transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
|
||||||
|
}
|
||||||
|
60% {
|
||||||
|
-webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
|
||||||
|
transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
|
||||||
|
}
|
||||||
|
75% {
|
||||||
|
-webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
|
||||||
|
transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
-webkit-transform: none;
|
||||||
|
transform: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes wobble {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: none;
|
||||||
|
transform: none;
|
||||||
|
}
|
||||||
|
15% {
|
||||||
|
-webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
|
||||||
|
transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
|
||||||
|
}
|
||||||
|
30% {
|
||||||
|
-webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
|
||||||
|
transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
|
||||||
|
}
|
||||||
|
45% {
|
||||||
|
-webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
|
||||||
|
transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
|
||||||
|
}
|
||||||
|
60% {
|
||||||
|
-webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
|
||||||
|
transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
|
||||||
|
}
|
||||||
|
75% {
|
||||||
|
-webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
|
||||||
|
transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
-webkit-transform: none;
|
||||||
|
transform: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-messages > .table {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-controls {
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-controls.with-border {
|
||||||
|
border-bottom: 1px solid rgba(0, 0, 0, 0.125);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-read-info {
|
||||||
|
border-bottom: 1px solid rgba(0, 0, 0, 0.125);
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-read-info h3 {
|
||||||
|
font-size: 20px;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-read-info h5 {
|
||||||
|
margin: 0;
|
||||||
|
padding: 5px 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-read-time {
|
||||||
|
color: #999;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-read-message {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-attachments {
|
||||||
|
padding-left: 0;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-attachments li {
|
||||||
|
border: 1px solid #eee;
|
||||||
|
float: left;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
margin-right: 10px;
|
||||||
|
width: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-attachment-name {
|
||||||
|
color: #666;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-attachment-icon,
|
||||||
|
.mailbox-attachment-info,
|
||||||
|
.mailbox-attachment-size {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-attachment-info {
|
||||||
|
background-color: #f8f9fa;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-attachment-size {
|
||||||
|
color: #999;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-attachment-size > span {
|
||||||
|
display: inline-block;
|
||||||
|
padding-top: .75rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-attachment-icon {
|
||||||
|
color: #666;
|
||||||
|
font-size: 65px;
|
||||||
|
max-height: 132.5px;
|
||||||
|
padding: 20px 10px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-attachment-icon.has-img {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mailbox-attachment-icon.has-img > img {
|
||||||
|
height: auto;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lockscreen {
|
||||||
|
background-color: #e9ecef;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lockscreen .lockscreen-name {
|
||||||
|
font-weight: 600;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lockscreen-logo {
|
||||||
|
font-size: 35px;
|
||||||
|
font-weight: 300;
|
||||||
|
margin-bottom: 25px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lockscreen-logo a {
|
||||||
|
color: #495057;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lockscreen-wrapper {
|
||||||
|
margin: 0 auto;
|
||||||
|
margin-top: 10%;
|
||||||
|
max-width: 400px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lockscreen-item {
|
||||||
|
border-radius: 4px;
|
||||||
|
background-color: #fff;
|
||||||
|
margin: 10px auto 30px;
|
||||||
|
padding: 0;
|
||||||
|
position: relative;
|
||||||
|
width: 290px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lockscreen-image {
|
||||||
|
border-radius: 50%;
|
||||||
|
background-color: #fff;
|
||||||
|
left: -10px;
|
||||||
|
padding: 5px;
|
||||||
|
position: absolute;
|
||||||
|
top: -25px;
|
||||||
|
z-index: 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lockscreen-image > img {
|
||||||
|
border-radius: 50%;
|
||||||
|
height: 70px;
|
||||||
|
width: 70px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lockscreen-credentials {
|
||||||
|
margin-left: 70px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lockscreen-credentials .form-control {
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lockscreen-credentials .btn {
|
||||||
|
background-color: #fff;
|
||||||
|
border: 0;
|
||||||
|
padding: 0 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lockscreen-footer {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark-mode .lockscreen-item {
|
||||||
|
background-color: #343a40;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark-mode .lockscreen-logo a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark-mode .lockscreen-credentials .btn {
|
||||||
|
background-color: #343a40;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark-mode .lockscreen-image {
|
||||||
|
background-color: #6c757d;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-logo,
|
||||||
|
.register-logo {
|
||||||
|
font-size: 2.1rem;
|
||||||
|
font-weight: 300;
|
||||||
|
margin-bottom: .9rem;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-logo a,
|
||||||
|
.register-logo a {
|
||||||
|
color: #495057;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-page,
|
||||||
|
.register-page {
|
||||||
|
-ms-flex-align: center;
|
||||||
|
align-items: center;
|
||||||
|
background-color: #e9ecef;
|
||||||
|
display: -ms-flexbox;
|
||||||
|
display: flex;
|
||||||
|
-ms-flex-direction: column;
|
||||||
|
flex-direction: column;
|
||||||
|
height: 100vh;
|
||||||
|
-ms-flex-pack: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-box,
|
||||||
|
.register-box {
|
||||||
|
width: 360px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 576px) {
|
||||||
|
.login-box,
|
||||||
|
.register-box {
|
||||||
|
margin-top: .5rem;
|
||||||
|
width: 90%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-box .card,
|
||||||
|
.register-box .card {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-card-body,
|
||||||
|
.register-card-body {
|
||||||
|
background-color: #fff;
|
||||||
|
border-top: 0;
|
||||||
|
color: #666;
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-card-body .input-group .form-control,
|
||||||
|
.register-card-body .input-group .form-control {
|
||||||
|
border-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-card-body .input-group .form-control:focus,
|
||||||
|
.register-card-body .input-group .form-control:focus {
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-card-body .input-group .form-control:focus ~ .input-group-prepend .input-group-text,
|
||||||
|
.login-card-body .input-group .form-control:focus ~ .input-group-append .input-group-text,
|
||||||
|
.register-card-body .input-group .form-control:focus ~ .input-group-prepend .input-group-text,
|
||||||
|
.register-card-body .input-group .form-control:focus ~ .input-group-append .input-group-text {
|
||||||
|
border-color: #80bdff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-card-body .input-group .form-control.is-valid:focus,
|
||||||
|
.register-card-body .input-group .form-control.is-valid:focus {
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-card-body .input-group .form-control.is-valid ~ .input-group-prepend .input-group-text,
|
||||||
|
.login-card-body .input-group .form-control.is-valid ~ .input-group-append .input-group-text,
|
||||||
|
.register-card-body .input-group .form-control.is-valid ~ .input-group-prepend .input-group-text,
|
||||||
|
.register-card-body .input-group .form-control.is-valid ~ .input-group-append .input-group-text {
|
||||||
|
border-color: #28a745;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-card-body .input-group .form-control.is-invalid:focus,
|
||||||
|
.register-card-body .input-group .form-control.is-invalid:focus {
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-card-body .input-group .form-control.is-invalid ~ .input-group-append .input-group-text,
|
||||||
|
.register-card-body .input-group .form-control.is-invalid ~ .input-group-append .input-group-text {
|
||||||
|
border-color: #dc3545;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-card-body .input-group .input-group-text,
|
||||||
|
.register-card-body .input-group .input-group-text {
|
||||||
|
background-color: transparent;
|
||||||
|
border-bottom-right-radius: 0.25rem;
|
||||||
|
border-left: 0;
|
||||||
|
border-top-right-radius: 0.25rem;
|
||||||
|
color: #777;
|
||||||
|
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-box-msg,
|
||||||
|
.register-box-msg {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0 20px 20px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.social-auth-links {
|
||||||
|
margin: 10px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark-mode .login-card-body,
|
||||||
|
.dark-mode .register-card-body {
|
||||||
|
background-color: #343a40;
|
||||||
|
border-color: #6c757d;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark-mode .login-logo a,
|
||||||
|
.dark-mode .register-logo a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.error-page {
|
||||||
|
margin: 20px auto 0;
|
||||||
|
width: 600px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 767.98px) {
|
||||||
|
.error-page {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.error-page > .headline {
|
||||||
|
float: left;
|
||||||
|
font-size: 100px;
|
||||||
|
font-weight: 300;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 767.98px) {
|
||||||
|
.error-page > .headline {
|
||||||
|
float: none;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.error-page > .error-content {
|
||||||
|
display: block;
|
||||||
|
margin-left: 190px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 767.98px) {
|
||||||
|
.error-page > .error-content {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.error-page > .error-content > h3 {
|
||||||
|
font-size: 25px;
|
||||||
|
font-weight: 300;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 767.98px) {
|
||||||
|
.error-page > .error-content > h3 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice {
|
||||||
|
background-color: #fff;
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.125);
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.invoice-title {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark-mode .invoice {
|
||||||
|
background-color: #343a40;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile-user-img {
|
||||||
|
border: 3px solid #adb5bd;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 3px;
|
||||||
|
width: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile-username {
|
||||||
|
font-size: 21px;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post {
|
||||||
|
border-bottom: 1px solid #adb5bd;
|
||||||
|
color: #666;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
padding-bottom: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post:last-of-type {
|
||||||
|
border-bottom: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
padding-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post .user-block {
|
||||||
|
margin-bottom: 15px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post .row {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark-mode .post {
|
||||||
|
color: #fff;
|
||||||
|
border-color: #6c757d;
|
||||||
|
}
|
||||||
|
|
||||||
|
.product-image {
|
||||||
|
max-width: 100%;
|
||||||
|
height: auto;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.product-image-thumbs {
|
||||||
|
-ms-flex-align: stretch;
|
||||||
|
align-items: stretch;
|
||||||
|
display: -ms-flexbox;
|
||||||
|
display: flex;
|
||||||
|
margin-top: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.product-image-thumb {
|
||||||
|
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
|
||||||
|
border-radius: 0.25rem;
|
||||||
|
background-color: #fff;
|
||||||
|
border: 1px solid #dee2e6;
|
||||||
|
display: -ms-flexbox;
|
||||||
|
display: flex;
|
||||||
|
margin-right: 1rem;
|
||||||
|
max-width: 7rem;
|
||||||
|
padding: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.product-image-thumb img {
|
||||||
|
max-width: 100%;
|
||||||
|
height: auto;
|
||||||
|
-ms-flex-item-align: center;
|
||||||
|
align-self: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.product-image-thumb:hover {
|
||||||
|
opacity: .5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.product-share a {
|
||||||
|
margin-right: .5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.projects td {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.projects .list-inline {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.projects img.table-avatar,
|
||||||
|
.projects .table-avatar img {
|
||||||
|
border-radius: 50%;
|
||||||
|
display: inline;
|
||||||
|
width: 2.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.projects .project-state {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.iframe-mode .main-sidebar {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.iframe-mode .content-wrapper {
|
||||||
|
margin-left: 0 !important;
|
||||||
|
margin-top: 0 !important;
|
||||||
|
padding-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.iframe-mode .main-header,
|
||||||
|
body.iframe-mode .main-footer {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.iframe-mode-fullscreen {
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.iframe-mode-fullscreen.layout-navbar-fixed .wrapper .content-wrapper {
|
||||||
|
margin-top: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-wrapper {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-wrapper.iframe-mode .btn-iframe-close {
|
||||||
|
color: #dc3545;
|
||||||
|
position: absolute;
|
||||||
|
line-height: 1;
|
||||||
|
right: .125rem;
|
||||||
|
top: .125rem;
|
||||||
|
z-index: 10;
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-wrapper.iframe-mode .btn-iframe-close:hover, .content-wrapper.iframe-mode .btn-iframe-close:focus {
|
||||||
|
-webkit-animation-name: fadeIn;
|
||||||
|
animation-name: fadeIn;
|
||||||
|
-webkit-animation-duration: 0.3s;
|
||||||
|
animation-duration: 0.3s;
|
||||||
|
-webkit-animation-fill-mode: both;
|
||||||
|
animation-fill-mode: both;
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (hover: none) and (pointer: coarse) {
|
||||||
|
.content-wrapper.iframe-mode .btn-iframe-close {
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-wrapper.iframe-mode .navbar-nav {
|
||||||
|
overflow-y: auto;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-wrapper.iframe-mode .navbar-nav .nav-link {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-wrapper.iframe-mode .navbar-nav .nav-item {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-wrapper.iframe-mode .navbar-nav .nav-item:hover .btn-iframe-close, .content-wrapper.iframe-mode .navbar-nav .nav-item:focus .btn-iframe-close {
|
||||||
|
-webkit-animation-name: fadeIn;
|
||||||
|
animation-name: fadeIn;
|
||||||
|
-webkit-animation-duration: 0.3s;
|
||||||
|
animation-duration: 0.3s;
|
||||||
|
-webkit-animation-fill-mode: both;
|
||||||
|
animation-fill-mode: both;
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (hover: none) and (pointer: coarse) {
|
||||||
|
.content-wrapper.iframe-mode .navbar-nav .nav-item:hover .btn-iframe-close, .content-wrapper.iframe-mode .navbar-nav .nav-item:focus .btn-iframe-close {
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-wrapper.iframe-mode .tab-content {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-wrapper.iframe-mode .tab-pane + .tab-empty {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-wrapper.iframe-mode .tab-empty {
|
||||||
|
width: 100%;
|
||||||
|
display: -ms-flexbox;
|
||||||
|
display: flex;
|
||||||
|
-ms-flex-pack: center;
|
||||||
|
justify-content: center;
|
||||||
|
-ms-flex-align: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-wrapper.iframe-mode .tab-loading {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
display: none;
|
||||||
|
background-color: #f4f6f9;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-wrapper.iframe-mode .tab-loading > div {
|
||||||
|
display: -ms-flexbox;
|
||||||
|
display: flex;
|
||||||
|
-ms-flex-pack: center;
|
||||||
|
justify-content: center;
|
||||||
|
-ms-flex-align: center;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-wrapper.iframe-mode iframe {
|
||||||
|
border: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
margin-bottom: -8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-wrapper.iframe-mode iframe .content-wrapper {
|
||||||
|
padding-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.iframe-mode-fullscreen .content-wrapper.iframe-mode {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
margin-left: 0 !important;
|
||||||
|
height: 100%;
|
||||||
|
min-height: 100%;
|
||||||
|
z-index: 1048;
|
||||||
|
}
|
||||||
|
|
||||||
|
.permanent-btn-iframe-close .btn-iframe-close {
|
||||||
|
-webkit-animation: none !important;
|
||||||
|
animation: none !important;
|
||||||
|
visibility: visible !important;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark-mode .content-wrapper.iframe-mode .tab-loading {
|
||||||
|
background-color: #343a40;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-wrapper.kanban {
|
||||||
|
height: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-wrapper.kanban .content {
|
||||||
|
height: 100%;
|
||||||
|
overflow-x: auto;
|
||||||
|
overflow-y: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-wrapper.kanban .content .container,
|
||||||
|
.content-wrapper.kanban .content .container-fluid {
|
||||||
|
width: -webkit-max-content;
|
||||||
|
width: -moz-max-content;
|
||||||
|
width: max-content;
|
||||||
|
display: -ms-flexbox;
|
||||||
|
display: flex;
|
||||||
|
-ms-flex-align: stretch;
|
||||||
|
align-items: stretch;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-wrapper.kanban .content-header + .content {
|
||||||
|
height: calc(100% - ((2 * 15px) + (1.8rem * 1.2)));
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-wrapper.kanban .card .card-body {
|
||||||
|
padding: .5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-wrapper.kanban .card.card-row {
|
||||||
|
width: 340px;
|
||||||
|
display: inline-block;
|
||||||
|
margin: 0 .5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-wrapper.kanban .card.card-row:first-child {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-wrapper.kanban .card.card-row .card-body {
|
||||||
|
height: calc(100% - (12px + (1.8rem * 1.2) + .5rem));
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-wrapper.kanban .card.card-row .card:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
border-bottom-width: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-wrapper.kanban .card.card-row .card .card-header {
|
||||||
|
padding: .5rem .75rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-wrapper.kanban .card.card-row .card .card-body {
|
||||||
|
padding: .75rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-wrapper.kanban .btn-tool.btn-link {
|
||||||
|
text-decoration: underline;
|
||||||
|
padding-left: 0;
|
||||||
|
padding-right: 0;
|
||||||
|
}
|
||||||
|
/*# sourceMappingURL=adminlte.pages.css.map */
|
||||||
1
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/css/alt/adminlte.pages.css.map
vendored
Normal file
8
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/css/alt/adminlte.pages.min.css
vendored
Normal file
1
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/css/alt/adminlte.pages.min.css.map
vendored
Normal file
9146
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/css/alt/adminlte.plugins.css
vendored
Normal file
1
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/css/alt/adminlte.plugins.css.map
vendored
Normal file
8
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/css/alt/adminlte.plugins.min.css
vendored
Normal file
1
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/css/alt/adminlte.plugins.min.css.map
vendored
Normal file
BIN
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/img/AdminLTELogo.png
vendored
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/img/avatar.png
vendored
Normal file
|
After Width: | Height: | Size: 7.9 KiB |
BIN
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/img/avatar2.png
vendored
Normal file
|
After Width: | Height: | Size: 8.1 KiB |
BIN
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/img/avatar3.png
vendored
Normal file
|
After Width: | Height: | Size: 9 KiB |
BIN
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/img/avatar4.png
vendored
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/img/avatar5.png
vendored
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/img/boxed-bg.jpg
vendored
Normal file
|
After Width: | Height: | Size: 121 KiB |
BIN
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/img/boxed-bg.png
vendored
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/img/credit/american-express.png
vendored
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/img/credit/cirrus.png
vendored
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/img/credit/mastercard.png
vendored
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/img/credit/paypal.png
vendored
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/img/credit/paypal2.png
vendored
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/img/credit/visa.png
vendored
Normal file
|
After Width: | Height: | Size: 1 KiB |
BIN
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/img/default-150x150.png
vendored
Normal file
|
After Width: | Height: | Size: 339 B |
BIN
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/img/icons.png
vendored
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/img/photo1.png
vendored
Normal file
|
After Width: | Height: | Size: 647 KiB |
BIN
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/img/photo2.png
vendored
Normal file
|
After Width: | Height: | Size: 413 KiB |
BIN
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/img/photo3.jpg
vendored
Normal file
|
After Width: | Height: | Size: 362 KiB |
BIN
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/img/photo4.jpg
vendored
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/img/prod-1.jpg
vendored
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/img/prod-2.jpg
vendored
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/img/prod-3.jpg
vendored
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
TPAtesa_RecHuma/PruebaAzureAD/wwwroot/adminlte/dist/img/prod-4.jpg
vendored
Normal file
|
After Width: | Height: | Size: 26 KiB |