1487 lines
77 KiB
Plaintext
1487 lines
77 KiB
Plaintext
@page "/InfoVidaAdministrativa"
|
|
|
|
@* @page "/InfoVidaAdministrativa/{viAd:string}/{usuVida:string}" *@
|
|
|
|
@using System.Net.Http.Headers
|
|
@using System.Linq.Expressions
|
|
@using Layout
|
|
@using Microsoft.AspNetCore
|
|
@using Microsoft.AspNetCore.WebUtilities
|
|
@using Newtonsoft.Json
|
|
@using System.Text
|
|
@using Serialize.Linq.Serializers
|
|
@using RegistroPersonalAN.Models
|
|
@using BlazorBootstrap
|
|
@using bdAntifraude.db
|
|
@using bdAntifraude.clases
|
|
@rendermode InteractiveServer
|
|
@layout MainLayout
|
|
@inject IHttpClientFactory HttpClientFactory
|
|
@inject IHttpContextAccessor HttpContextAccessor
|
|
@inject UserState UserState
|
|
@inject NavigationManager Navigation
|
|
|
|
|
|
@if (mostrar)
|
|
{
|
|
<div id="cargando" class="loadingFrame">
|
|
<div class="loadingImg"></div>
|
|
</div>
|
|
}
|
|
@if (mostrarMensajeCuerpo == true)
|
|
{
|
|
<div class="loadingFrameVida">
|
|
<div class="popupRPCard row">
|
|
<p>No es posible editar vidas administrativas si la persona no tiene un cuerpo asignado</p>
|
|
<input type="button" value="Continuar" @onclick="OcultarMenCuer" />
|
|
</div>
|
|
</div>
|
|
}
|
|
@if (mostrarMensajeEliminar == true)
|
|
{
|
|
<div class="loadingFrameVida">
|
|
<div class="popupRPCard row">
|
|
<p>¿Esta seguro de eliminar esta vida administrativa?</p>
|
|
<div class="col-12 d-flex gap-2 justify-content-end">
|
|
<input type="button" class="btnGris" value="Continuar" @onclick="BorrarVida" />
|
|
<input type="button" class="btnOAAFAzul" value="Cancelar" @onclick="OcultarMenElim" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
}
|
|
@if (mostrarMensajeEliminarLinea == true)
|
|
{
|
|
<div class="loadingFrameVida">
|
|
<div class="popupRPCard row">
|
|
<p>¿Esta seguro de eliminar esta linea de vida administrativa?</p>
|
|
<div class="col-12 d-flex gap-2 justify-content-end">
|
|
<input type="button" class="btnGris" value="Continuar" @onclick="BorrarLineaVida" />
|
|
<input type="button" class="btnOAAFAzul" value="Cancelar" @onclick="cerrarEliminarLineaVida" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
}
|
|
@if (mostrarAnadirLineaVida == true)
|
|
{
|
|
<div class="loadingFrameVida">
|
|
<div class="popupRPCard row">
|
|
<div class="col-12 formatoCampos"> <label class="tituloLbl">Descripción:</label><InputText @bind-Value="DESCRIPCIONLINEAVIDA" class="inputForm" /></div>
|
|
<div class="col-6 formatoCampos">
|
|
<label class="tituloLbl">Tipo de documento:</label>
|
|
<InputSelect class="inputForm" @bind-Value="IDTIPODOCU">
|
|
@foreach (ENUMERACIONES tipoDocu in listTipoDocu)
|
|
{
|
|
<option value="@tipoDocu.IDENUMERACION">@tipoDocu.DESCRIPCION</option>
|
|
}
|
|
</InputSelect>
|
|
</div>
|
|
<div class="col-6 formatoCampos">
|
|
<InputFile class="inputForm" OnChange="LoadFile"></InputFile>
|
|
</div>
|
|
<div class="col-12 d-flex mt-2 justify-content-end gap-2">
|
|
<input type="button" class="btnOAAFAzul" value="Continuar" @onclick="AnadirLineaVida" />
|
|
<input type="button" class="btnGris" value="Cancelar" @onclick="cerrarAnadirLineaVida" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
}
|
|
@if (mostrarEditarLineaVida == true)
|
|
{
|
|
<div class="loadingFrameVida">
|
|
<div class="popupRPCard row">
|
|
<div class="col-12 formatoCampos"> <label class="tituloLbl">Descripción:</label><InputText @bind-Value="DESCRIPCIONLINEAVIDAED" class="inputForm" /></div>
|
|
<div class="col-6 formatoCampos">
|
|
<label class="tituloLbl">Tipo de documento:</label>
|
|
<InputSelect class="inputForm" @bind-Value="IDTIPODOCUED" disabled>
|
|
@foreach (ENUMERACIONES tipoDocu in listTipoDocu)
|
|
{
|
|
<option value="@tipoDocu.IDENUMERACION">@tipoDocu.DESCRIPCION</option>
|
|
}
|
|
</InputSelect>
|
|
</div>
|
|
<div class="col-6 formatoCampos">
|
|
<InputFile class="inputForm" OnChange="LoadFile1">Seleccione un archivo para sobreescribir el anterior</InputFile>
|
|
</div>
|
|
<div class="col-12 d-flex mt-2 justify-content-end gap-2">
|
|
<input type="button" class="btnOAAFAzul" value="Continuar" @onclick="EditarLineaVida" />
|
|
<input type="button" class="btnGris" value="Cancelar" @onclick="cerrarEditarLineaVida" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
}
|
|
<div class="pagina">
|
|
<div class="popupRP" style="display:none;" id="popupConfirmar">
|
|
<div id="confirmarCard" class="popupRPCard row">
|
|
</div>
|
|
</div>
|
|
<div class="popupRP" style="display:none;" id="popupMensaje">
|
|
<div class="popupRPCard row">
|
|
<p id="lblMensaje"></p>
|
|
<input type="button" class="btnGris" value="Continuar" onclick="$('#popupMensaje').css('display','none'); location.reload()" />
|
|
</div>
|
|
</div>
|
|
<div class="popupRP" style="display: none;" id="popupCuerpo">
|
|
<div class="popupRPCard row">
|
|
<p id="lblMensajeCu"></p>
|
|
<input type="button" class="btnGris" value="Continuar" onclick="$('#popupCuerpo').css('display','none');" />
|
|
</div>
|
|
</div>
|
|
<div class="popupRP" style="display: none;" id="popupVidaAdmin">
|
|
<div class="popupRPCard row">
|
|
<div class="col-md-12" style="flex-direction: column">
|
|
<p class="lblinputRP">Descripción:</p>
|
|
<input class="inputRP" type="text" id="DescripVA" />
|
|
</div>
|
|
<div class="col-md-6" style="flex-direction: column">
|
|
<p class="lblinputRP">Tipo de documento:</p>
|
|
<select ID="TipoCB">
|
|
</select>
|
|
</div>
|
|
|
|
<div class="col-md-6" style="flex-direction: column">
|
|
<p class="lblinputRP">Fichero:</p>
|
|
<input class="inputRP" type="file" onchange="archivo('fileForm')" id="fileForm" />
|
|
</div>
|
|
<div class="col-md-12 justify-content-end" style="display: flex; justify-content: end; gap: 10px">
|
|
<input type="button" class="btnOAAFAzul" value="Añadir" id="anadirForm" onclick="nuevaFormacion()" />
|
|
<input type="button" class="btnOAAFAzul" value="Modificar" style="display: none" id="modForm" onclick="ModificarForm()" />
|
|
<input type="button" class="btnGris" value="Cancelar" />
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="Cabecera">
|
|
<h6><small><i class="fas fa-handshake"></i><b>Vida administrativa (<a id="lblNombre" href="@LINKPERSONA">@usuarioVida</a> )</b></small></h6>
|
|
</div>
|
|
<div>
|
|
<EditForm Model="Model" FormName="FormInfoViAd" class="formDtosAdmin">
|
|
<DataAnnotationsValidator />
|
|
<ValidationSummary />
|
|
|
|
<div class="botonera col-12 gap-1" style="display:flex;">
|
|
<button class="btnOAAFAzul" @onclick="volver" title="Volver"><i class="fas fa-long-arrow-alt-left"></i></button>
|
|
<button class="btnOAAFAzul" @onclick="guardarFormulario" title="Guardar"><i class="fas fa-save"></i></button>
|
|
<button class="btnOAAFAzul" hidden=@ocultarBtnBorr @onclick="mostrarAvisoEliminar" title="Eliminar"><i class="fas fa-trash"></i></button>
|
|
</div>
|
|
|
|
<div class="areaMenu m-0">
|
|
<div class="camposficha row">
|
|
@if (nueva == true)
|
|
{
|
|
<div class="col-4 formatoCampos">
|
|
<label class="tituloLbl">Acto Administrativo<span style="color:red">*</span>:</label>
|
|
<InputSelect id="cbActosAdministrativos" class="inputForm"
|
|
@bind-Value="IDAPTOACTUAL" @bind-Value:after="CargarMotivos" @oninput="e => ValidarYActualizar(e, nameof(IDAPTOACTUAL))">
|
|
@foreach (TIPOAPTOSADMINISTRATIVOS Actos in TiposActos)
|
|
{
|
|
@if ((Actos.DESCRIPCION == "TOMA POSESION" || Actos.DESCRIPCION == "TOMA POSESIÓN ORGANIZATIVA") && IDPUESTOACTUAL != 0) { }
|
|
else
|
|
{
|
|
<option value="@Actos.IDTIPO">@Actos.DESCRIPCION</option>
|
|
}
|
|
}
|
|
</InputSelect>
|
|
<div class="validation-message">@GetExternalValidationMessage(nameof(IDAPTOACTUAL))</div>
|
|
</div>
|
|
}
|
|
else if (IDAPTOACTUAL != 0)
|
|
{
|
|
<div class="col-4 formatoCampos">
|
|
<label class="tituloLbl">Acto Administrativo:</label>
|
|
<p class="inputForm falsoImput">@TiposActos?.FirstOrDefault(x => x.IDTIPO == IDAPTOACTUAL)?.DESCRIPCION </p>
|
|
</div>
|
|
}
|
|
<div class="col-4 formatoCampos">
|
|
<label class="tituloLbl">Causa<span style="color:red">*</span>:</label>
|
|
<InputSelect @bind-Value="IDMOTIVOACTUAL" class="inputForm" @oninput="e => ValidarYActualizar(e, nameof(IDMOTIVOACTUAL))">
|
|
@foreach (var solicitud in listMotivos.Where(x => x.ACTIVOB == true))
|
|
{
|
|
<option value="@solicitud.IDMOTIVO">@solicitud.DESCRIPCION</option>
|
|
}
|
|
</InputSelect>
|
|
<div class="validation-message">@GetExternalValidationMessage(nameof(IDMOTIVOACTUAL))</div>
|
|
</div>
|
|
<div class="col-2 formatoCampos">
|
|
<label class="tituloLbl">Fecha de Efecto<span style="color:red">*</span>:</label>
|
|
<InputDate @bind-Value="Model.FECHA" class="inputForm" @oninput="e => ValidarYActualizar(e, nameof(Model.FECHA))"></InputDate>
|
|
<div class="validation-message">@GetExternalValidationMessage(nameof(Model.FECHA))</div>
|
|
</div>
|
|
<div class="col-2 formatoCampos">
|
|
<label class="tituloLbl">Fecha de Resolución:</label>
|
|
<InputDate @bind-Value="Model.FECHARESOLUCION" class="inputForm"></InputDate>
|
|
</div>
|
|
@if (mostrarNRP == true)
|
|
{
|
|
<div class="col-3 formatoCampos">
|
|
<label class="tituloLbl">NRP:</label>
|
|
<p class="inputForm falsoImput">@Model.NRP</p>
|
|
</div>
|
|
}
|
|
@if (Model.IDPUESTONavigation != null && mostrarPuesto == true)
|
|
{
|
|
<div class="col-4 formatoCampos">
|
|
<label class="tituloLbl">Puesto:</label>
|
|
<p class="inputForm falsoImput">@Model.IDPUESTONavigation.DESPUESCOM</p>
|
|
</div>
|
|
}
|
|
@if (mostrarTramo == true)
|
|
{
|
|
<div class="col-2 formatoCampos">
|
|
<label class="tituloLbl">Tramo<span style="color:red">*</span>:</label>
|
|
<InputSelect @bind-Value="IDTRAMOACTUAL" class="inputForm">
|
|
|
|
@foreach (var solicitud in TramosComp)
|
|
{
|
|
<option value="@solicitud.IDENUMERACION">@solicitud.DESCRIPCION</option>
|
|
}
|
|
</InputSelect>
|
|
<div class="validation-message">@GetExternalValidationMessage(nameof(IDTRAMOACTUAL))</div>
|
|
</div>
|
|
}
|
|
@if (mostrarTipPer == true)
|
|
{
|
|
<div class="col-2 formatoCampos">
|
|
<label class="tituloLbl">Clase Personal<span style="color:red">*</span>:</label>
|
|
<InputSelect @bind-Value="IDTIPOPERSONALACT" class="inputForm">
|
|
@foreach (var solicitud in TiposPersonal)
|
|
{
|
|
<option value="@solicitud.IDTIPO">@solicitud.DESCRIPCION</option>
|
|
}
|
|
</InputSelect>
|
|
<div class="validation-message">@GetExternalValidationMessage(nameof(IDTIPOPERSONALACT))</div>
|
|
</div>
|
|
}
|
|
@if (mostrarNivel == true)
|
|
{
|
|
<div class="col-2 formatoCampos">
|
|
<label class="tituloLbl">Nivel<span style="color:red">*</span>:</label>
|
|
<InputSelect @bind-Value="NIVELACTUAL" class="inputForm">
|
|
@foreach (var solicitud in Niveles)
|
|
{
|
|
<option value="@solicitud.IDNIVEL">@solicitud.DESCRIPCION</option>
|
|
}
|
|
</InputSelect>
|
|
<div class="validation-message">@GetExternalValidationMessage(nameof(NIVELACTUAL))</div>
|
|
</div>
|
|
}
|
|
@if (mostrarPuestosDisp == true)
|
|
{
|
|
<div class="col-8 formatoCampos">
|
|
<label class="tituloLbl">Puestos Libres<span style="color:red">*</span>:</label>
|
|
|
|
<style>
|
|
.dropdown-list {
|
|
position: absolute;
|
|
width: 100%; /* Se ajusta al ancho del contenedor */
|
|
max-height: 300px; /* Altura máxima con scroll si hay muchos elementos */
|
|
overflow-y: auto; /* Muestra barra de scroll vertical */
|
|
background: #fff;
|
|
border: 1px solid #ccc;
|
|
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15);
|
|
margin-top: 10px;
|
|
z-index: 10;
|
|
}
|
|
|
|
.dropdown-item {
|
|
padding: 8px 12px;
|
|
cursor: pointer;
|
|
white-space: normal; /* Permite que el texto se ajuste */
|
|
border-bottom: 1px solid #ccc; /* Línea de separación */
|
|
}
|
|
|
|
.dropdown-item:last-child {
|
|
border-bottom: none; /* Quita la línea de separación en el último elemento */
|
|
}
|
|
|
|
.dropdown-item:hover {
|
|
background-color: dodgerblue;
|
|
color: #fff;
|
|
}
|
|
</style>
|
|
|
|
<div class="col-12">
|
|
<input @bind="filterText" @bind:event="oninput" @onfocus="ShowDropdown" @onblur="HideDropdownAfterDelay"
|
|
placeholder="Seleccione un puesto" class="inputForm col-12" />
|
|
|
|
@if (showDropdown)
|
|
{
|
|
<div class="dropdown-list">
|
|
@foreach (var puesto in FiltrarPuestos(PuestoDisp, filterText))
|
|
{
|
|
<div class="dropdown-item" @onclick="() => SelectPuesto(puesto)">
|
|
@((MarkupString)puesto.DESPUESCOM
|
|
.Replace("Código:", "<strong>Código:</strong>")
|
|
.Replace(" Departamento:", "<span style='margin-left:20px;'><strong>Departamento:</strong></span>")
|
|
.Replace(" Puesto:", "<span style='margin-left:20px;'><strong>Puesto:</strong></span>"))
|
|
</div>
|
|
|
|
}
|
|
</div>
|
|
}
|
|
|
|
|
|
</div>
|
|
<div class="validation-message">@GetExternalValidationMessage(nameof(IDPUESTOACTUAL))</div>
|
|
|
|
<div class="validation-message">@GetExternalValidationMessage(nameof(IDPUESTOACTUAL))</div>
|
|
</div>
|
|
}
|
|
@if (mostrarCaracter == true)
|
|
{
|
|
<div class="col-2 formatoCampos">
|
|
<label class="tituloLbl">Carácter Ocupación<span style="color:red">*</span>:</label>
|
|
<InputSelect @bind-Value="IDOCUPACIONACTUAL" class="inputForm">
|
|
@foreach (var solicitud in Ocupaciones)
|
|
{
|
|
<option value="@solicitud.IDOCUPACION">@solicitud.DESCRIPCION</option>
|
|
}
|
|
</InputSelect>
|
|
<div class="validation-message">@GetExternalValidationMessage(nameof(IDOCUPACIONACTUAL))</div>
|
|
</div>
|
|
}
|
|
|
|
<div class="col-4 formatoCampos">
|
|
<label class="tituloLbl">Observaciones:</label>
|
|
<InputText @bind-Value="Model.OBSERVACIONES" class="inputForm"></InputText>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</EditForm>
|
|
@if (nueva == false)
|
|
{
|
|
<div class="mt-2">
|
|
<input type="button" class="btnOAAFAzul" value="Nueva linea de vida administrativa" @onclick="abrirAnadirLineaVida" />
|
|
</div>
|
|
}
|
|
@if (listLineasVida.Count > 0)
|
|
{
|
|
<Grid TItem="LINEASVIDAADMINISTRATIVA"
|
|
Class="table tablaRegPers"
|
|
Data="listLineasVida"
|
|
AllowFiltering="false"
|
|
PageSize="10"
|
|
AllowPaging="true"
|
|
AllowSorting="true"
|
|
EmptyText="No se han encontrado datos"
|
|
Height="100"
|
|
PageSizeSelectorVisible="false"
|
|
PageSizeSelectorItems="@(new int[] { 5,10,20,50 })"
|
|
Responsive="true"
|
|
PaginationItemsTextFormat="{0} - {1} de {2} elementos">
|
|
|
|
<GridColumns>
|
|
<GridColumn TItem="LINEASVIDAADMINISTRATIVA" HeaderText="Código" PropertyName="IDLINEAVIDAADMIN">
|
|
@context.IDLINEAVIDAADMIN
|
|
</GridColumn>
|
|
<GridColumn TItem="LINEASVIDAADMINISTRATIVA" HeaderText="Descripción" PropertyName="DESCRIPCION">
|
|
|
|
<a href="@urlFich(context.IDLINEAVIDAADMIN)" target="_blank"> @context.DESCRIPCION</a>
|
|
|
|
</GridColumn>
|
|
<GridColumn TItem="LINEASVIDAADMINISTRATIVA" HeaderText="Tipo Documento" PropertyName="IDTIPONavigation.DESCRIPCION">
|
|
@if (context?.IDTIPONavigation != null)
|
|
{
|
|
@context.IDTIPONavigation.DESCRIPCION
|
|
}
|
|
else
|
|
{
|
|
<em>No disponible</em>
|
|
}
|
|
</GridColumn>
|
|
@* <GridColumn TItem="LINEASVIDAADMINISTRATIVA" HeaderText="Fecha" PropertyName="FECHASUBIDA">
|
|
@context.FECHASUBIDA?.ToString("dd/MM/yyyy")
|
|
</GridColumn> *@
|
|
|
|
<GridColumn TItem="LINEASVIDAADMINISTRATIVA" HeaderText="">
|
|
<span @onclick="@(() => abrirEditarLineaVida(context))" style="cursor: pointer;">
|
|
<Icon CustomIconName="fas fa-edit"></Icon>
|
|
</span>
|
|
<span @onclick="@(() => mostrarAvisoEliminarLinea(context))" style="cursor: pointer;">
|
|
<Icon CustomIconName="fas fa-trash"></Icon>
|
|
</span>
|
|
</GridColumn>
|
|
</GridColumns>
|
|
|
|
|
|
</Grid>
|
|
}
|
|
</div>
|
|
</div>
|
|
@code {
|
|
private bool showDropdown { get; set; }
|
|
private string filterText { get; set; } = "";
|
|
private AutoComplete<PUESTOS> autoCompleteRef { get; set; } = new AutoComplete<PUESTOS>();
|
|
[Parameter]
|
|
public bool mostrar { get; set; } = true;
|
|
public int va { get; set; }
|
|
public string uv { get; set; } = "";
|
|
public string inicializarAuto = "";
|
|
private bool nueva = false;
|
|
private bool mostrarMensajeCuerpo = false;
|
|
private bool mostrarMensajeEliminar = false;
|
|
private bool mostrarMensajeEliminarLinea = false;
|
|
private bool mostrarAnadirLineaVida = false;
|
|
private bool mostrarEditarLineaVida = false;
|
|
private string usuarioVida { get; set; } = "";
|
|
private string DESCRIPCIONLINEAVIDA { get; set; } = "";
|
|
private string DESCRIPCIONLINEAVIDAED { get; set; } = "";
|
|
private string LINKPERSONA { get; set; } = "";
|
|
private int? IDTIPODOCU { get; set; }
|
|
private int? IDTIPODOCUED { get; set; }
|
|
private int? EsExterno { get; set; }
|
|
private int idVidaActual { get; set; }
|
|
private int idUsuActual { get; set; }
|
|
|
|
private bool mostrarNRP = true;
|
|
private bool mostrarPuesto = true;
|
|
private bool mostrarAdscripcion = true;
|
|
|
|
private bool mostrarTramo = false;
|
|
private bool mostrarNivel = false;
|
|
private bool mostrarPuestosDisp = false;
|
|
private bool mostrarCaracter = false;
|
|
private bool mostrarTipPer = false;
|
|
|
|
public LINEASVIDAADMINISTRATIVA lineaEditada { get; set; } = new LINEASVIDAADMINISTRATIVA();
|
|
public VIDA_ADMINISTRATIVA Model = new VIDA_ADMINISTRATIVA();
|
|
public bdAntifraude.db.PUESTOS Puesto = new PUESTOS();
|
|
public bdAntifraude.db.PUESTOS puestoElegido { get; set; }
|
|
|
|
private List<PUESTOS> PuestoDisp = new List<PUESTOS>();
|
|
// private List<PUESTOS> PuestoVac = new List<PUESTOS>();
|
|
private List<OCUPACION> Ocupaciones = new List<OCUPACION>();
|
|
private List<TIPOAPTOSADMINISTRATIVOS> TiposActos = new List<TIPOAPTOSADMINISTRATIVOS>();
|
|
private List<NIVEL> Niveles = new List<NIVEL>();
|
|
private List<ENUMERACIONES> TramosComp = new List<ENUMERACIONES>();
|
|
private List<TIPOS_PERSONAL> TiposPersonal = new List<TIPOS_PERSONAL>();
|
|
private List<MOTIVOS_ADMINISTRATIVOS> listMotivos = new List<MOTIVOS_ADMINISTRATIVOS>();
|
|
private List<ENUMERACIONES> listTramos = new List<ENUMERACIONES>();
|
|
private List<SERVICIOS> listServicios = new List<SERVICIOS>();
|
|
private List<UNIDADADMINISTRATIVA> listUnidadAdministrativa = new List<UNIDADADMINISTRATIVA>();
|
|
private List<LINEASVIDAADMINISTRATIVA> listLineasVida = new List<LINEASVIDAADMINISTRATIVA>();
|
|
private List<DOTACION> listDotacion = new List<DOTACION>();
|
|
private List<ENUMERACIONES> listTipoDocu = new List<ENUMERACIONES>();
|
|
private List<bdAntifraude.db.PUESTOS> puestosdelapersona = new List<bdAntifraude.db.PUESTOS>();
|
|
|
|
private string Base64File { get; set; } = ""; // Para almacenar el archivo convertido
|
|
private string Base64FileEd { get; set; } = ""; // Para almacenar el archivo convertido
|
|
private string FileName { get; set; } = ""; // Para almacenar el nombre del archivo
|
|
|
|
private bdAntifraude.db.RPT RPTACTUAL { get; set; } = new bdAntifraude.db.RPT();
|
|
private bdAntifraude.db.PERSONAS Persona { get; set; } = new PERSONAS();
|
|
private int IDAPTOACTUAL { get; set; }
|
|
private int IDTIPOPERSONALACT { get; set; }
|
|
private int IDMOTIVOACTUAL { get; set; }
|
|
private int IDTRAMOACTUAL { get; set; }
|
|
private int IDOCUPACIONACTUAL { get; set; }
|
|
private int NIVELACTUAL { get; set; }
|
|
private int IDSERVICIOACTUAL { get; set; }
|
|
private int IDUNIDADADMINISTRATIVAACTUAL { get; set; }
|
|
private int IDPERSONASLINK { get; set; }
|
|
private int IDPUESTOACTUAL { get; set; }
|
|
private int IDPUESTODISACTUAL { get; set; }
|
|
private string DESMOTIVOACTUAL { get; set; } = "";
|
|
private bool OcupacionDefinitiva { get; set; }
|
|
private bool ocultarBtnBorr { get; set; } = false;
|
|
private HttpClient client { get; set; } = new HttpClient();
|
|
private ExpressionSerializer? serializer { get; set; }
|
|
private ValidationMessageStore? messageStore;
|
|
private EditContext? editContext;
|
|
|
|
private int idPuestoSelect { get; set; }
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
try
|
|
{
|
|
var uri = Navigation.ToAbsoluteUri(Navigation.Uri);
|
|
if (QueryHelpers.ParseQuery(uri.Query).TryGetValue("iv", out var ivValue))
|
|
{
|
|
idVidaActual = Int32.Parse(tsUtilidades.crypt.FEncS(ivValue, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*", "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*", -875421649));
|
|
|
|
}
|
|
if (QueryHelpers.ParseQuery(uri.Query).TryGetValue("uv", out var uvValue))
|
|
{
|
|
idUsuActual = Int32.Parse(tsUtilidades.crypt.FEncS(uvValue, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*", "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*", -875421649));
|
|
}
|
|
|
|
if(idVidaActual != 0){
|
|
ocultarBtnBorr = false;
|
|
}else{
|
|
ocultarBtnBorr = true;
|
|
}
|
|
|
|
editContext = new EditContext(Model);
|
|
messageStore = new ValidationMessageStore(editContext);
|
|
|
|
// idUsuActual = Int32.Parse(tsUtilidades.crypt.FEncS(usuVida, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*", "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*", -875421649));
|
|
// idVidaActual = Int32.Parse(tsUtilidades.crypt.FEncS(viAd, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*", "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*", -875421649));
|
|
var token = UserState.Token;
|
|
if (string.IsNullOrEmpty(token))
|
|
{
|
|
Console.WriteLine("Token no encontrado en las cookies.");
|
|
return;
|
|
}
|
|
client = HttpClientFactory.CreateClient();
|
|
client.BaseAddress = new Uri(Utilidades.urlSwagger());
|
|
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
|
|
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
|
|
serializer = new ExpressionSerializer(new Serialize.Linq.Serializers.JsonSerializer());
|
|
|
|
/*TRAMOS*/
|
|
|
|
Expression<Func<ENUMERACIONES, bool>> filtro = x =>
|
|
x.IDGRUPOENUMERACIONNavigation!.GRUPO == "TRAMCOMCARR";
|
|
var serializedExpression = serializer.SerializeText(filtro);
|
|
var tramosjsonContent = JsonConvert.SerializeObject(new { Expression = serializedExpression });
|
|
var tramoscontent = new StringContent(tramosjsonContent, Encoding.UTF8, "application/json");
|
|
var tramosresponse = await client.PostAsync("/api/ENUMERACIONES/filtrar", tramoscontent);
|
|
var tramCont = await tramosresponse.Content.ReadAsStringAsync();
|
|
TramosComp = JsonConvert.DeserializeObject<List<ENUMERACIONES>>(tramCont) ?? new List<ENUMERACIONES>();
|
|
TramosComp = TramosComp.OrderBy(x => x.ORDEN).ToList() ?? new List<ENUMERACIONES>();
|
|
|
|
/*TIPOS DOCUMENTO*/
|
|
|
|
Expression<Func<ENUMERACIONES, bool>> filtroTD = x =>
|
|
x.CODIGO!.Contains("TFVA.");
|
|
var TDExpression = serializer.SerializeText(filtroTD);
|
|
var TDjsonContent = JsonConvert.SerializeObject(new { Expression = TDExpression });
|
|
var TDcontent = new StringContent(TDjsonContent, Encoding.UTF8, "application/json");
|
|
var TDresponse = await client.PostAsync("/api/ENUMERACIONES/filtrar", TDcontent);
|
|
var TDCont = await TDresponse.Content.ReadAsStringAsync();
|
|
listTipoDocu = JsonConvert.DeserializeObject<List<ENUMERACIONES>>(TDCont) ?? new List<ENUMERACIONES>();
|
|
listTipoDocu = listTipoDocu.OrderBy(x => x.ORDEN).ToList() ?? new List<ENUMERACIONES>();
|
|
|
|
/*ACTOS ADMINISTRATIVOS*/
|
|
|
|
var TiApAd = await client.GetAsync("/api/TIPOAPTOSADMINISTRATIVOS");
|
|
var TiApAdContent = await TiApAd.Content.ReadAsStringAsync();
|
|
if (TiApAd.IsSuccessStatusCode) { TiposActos = JsonConvert.DeserializeObject<List<TIPOAPTOSADMINISTRATIVOS>>(TiApAdContent) ?? new List<TIPOAPTOSADMINISTRATIVOS>(); }
|
|
TiposActos = TiposActos.OrderBy(x => x.DESCRIPCION).ToList() ?? new List<TIPOAPTOSADMINISTRATIVOS>();
|
|
|
|
/*NIVELES*/
|
|
|
|
var niv = await client.GetAsync("/api/NIVEL");
|
|
var nivContent = await niv.Content.ReadAsStringAsync();
|
|
if (niv.IsSuccessStatusCode) { Niveles = JsonConvert.DeserializeObject<List<NIVEL>>(nivContent) ?? new List<NIVEL>(); }
|
|
Niveles = Niveles.OrderBy(x => x.DESCRIPCION).ToList();
|
|
|
|
/*DOTACION*/
|
|
|
|
var dot = await client.GetAsync("/api/DOTACION");
|
|
var dotContent = await dot.Content.ReadAsStringAsync();
|
|
if (dot.IsSuccessStatusCode) { listDotacion = JsonConvert.DeserializeObject<List<DOTACION>>(dotContent) ?? new List<DOTACION>(); }
|
|
listDotacion = listDotacion.OrderBy(x => x.DOTACION1).ToList() ?? new List<DOTACION>();
|
|
|
|
/*OCUPACIONES*/
|
|
|
|
var ocu = await client.GetAsync("/api/OCUPACION");
|
|
var ocuContent = await ocu.Content.ReadAsStringAsync();
|
|
if (ocu.IsSuccessStatusCode) { Ocupaciones = JsonConvert.DeserializeObject<List<OCUPACION>>(ocuContent) ?? new List<OCUPACION>(); }
|
|
Ocupaciones = Ocupaciones.OrderBy(x => x.DESCRIPCION).ToList() ?? new List<OCUPACION>();
|
|
|
|
/*TIPOS PERSONAS*/
|
|
|
|
var tiPe = await client.GetAsync("/api/TIPOS_PERSONAL");
|
|
var tiPeContent = await tiPe.Content.ReadAsStringAsync();
|
|
if (tiPe.IsSuccessStatusCode) { TiposPersonal = JsonConvert.DeserializeObject<List<TIPOS_PERSONAL>>(tiPeContent) ?? new List<TIPOS_PERSONAL>(); }
|
|
TiposPersonal = TiposPersonal.OrderBy(x => x.DESCRIPCION).ToList() ?? new List<TIPOS_PERSONAL>();
|
|
|
|
/*UNIDAD ADMINISTRATIVA*/
|
|
|
|
var UniAdm = await client.GetAsync("/api/UNIDADADMINISTRATIVA");
|
|
var UniAdmContent = await UniAdm.Content.ReadAsStringAsync();
|
|
if (UniAdm.IsSuccessStatusCode) { listUnidadAdministrativa = JsonConvert.DeserializeObject<List<UNIDADADMINISTRATIVA>>(UniAdmContent) ?? new List<UNIDADADMINISTRATIVA>(); }
|
|
listUnidadAdministrativa = listUnidadAdministrativa.OrderBy(x => x.ORDEN).ToList() ?? new List<UNIDADADMINISTRATIVA>();
|
|
|
|
/*SERVICIOS*/
|
|
|
|
var serv = await client.GetAsync("/api/SERVICIOS");
|
|
var servContent = await serv.Content.ReadAsStringAsync();
|
|
if (serv.IsSuccessStatusCode) { listServicios = JsonConvert.DeserializeObject<List<SERVICIOS>>(servContent) ?? new List<SERVICIOS>(); }
|
|
listServicios = listServicios.OrderBy(x => x.ORDEN).ToList() ?? new List<SERVICIOS>();
|
|
|
|
/**/
|
|
/*SITUACION ACTUAL*/
|
|
|
|
Expression<Func<ENUMERACIONES, bool>> filtroSitu = x =>
|
|
x.CODIGO == "SITRPTMAESTRO.ACT";
|
|
var SituExpression = serializer.SerializeText(filtroSitu);
|
|
var SitujsonContent = JsonConvert.SerializeObject(new { Expression = SituExpression });
|
|
var Situcontent = new StringContent(SitujsonContent, Encoding.UTF8, "application/json");
|
|
var Situresponse = await client.PostAsync("/api/ENUMERACIONES/filtrar", Situcontent);
|
|
var SituCont = await Situresponse.Content.ReadAsStringAsync();
|
|
List<ENUMERACIONES> situacionActual = JsonConvert.DeserializeObject<List<ENUMERACIONES>>(SituCont) ?? new List<ENUMERACIONES>();
|
|
int idSituAct = situacionActual.First().IDENUMERACION;
|
|
|
|
/*RPT ACTUAL*/
|
|
|
|
Expression<Func<bdAntifraude.db.RPT, bool>> filtroRPT = x =>
|
|
x.IDSITUACIONNavigation!.IDENUMERACION == idSituAct;
|
|
|
|
var RPTExpression = serializer.SerializeText(filtroRPT);
|
|
var RPTjsonContent = JsonConvert.SerializeObject(new { Expression = RPTExpression });
|
|
var RPTcontent = new StringContent(RPTjsonContent, Encoding.UTF8, "application/json");
|
|
var RPTresponse = await client.PostAsync("/api/RPT/filtrar", RPTcontent);
|
|
var RPTCont = await RPTresponse.Content.ReadAsStringAsync();
|
|
RPTACTUAL = JsonConvert.DeserializeObject<List<bdAntifraude.db.RPT>>(RPTCont)?.First() ?? new bdAntifraude.db.RPT();
|
|
|
|
/*PUESTOS DISPONIBLES*/
|
|
|
|
int IDRPT1 = RPTACTUAL.IDRPT;
|
|
Expression<Func<PUESTOS, bool>> filtroPue = x => x.IDRPTNavigation != null && x.IDRPTNavigation.IDRPT == IDRPT1 && x.IDPERSONAL == null;
|
|
var PueExpression = serializer.SerializeText(filtroPue);
|
|
var PuejsonContent = JsonConvert.SerializeObject(new { Expression = PueExpression });
|
|
var Puecontent = new StringContent(PuejsonContent, Encoding.UTF8, "application/json");
|
|
var Pueresponse = await client.PostAsync("/api/PUESTOS/getActivos", Puecontent);
|
|
var PueCont = await Pueresponse.Content.ReadAsStringAsync();
|
|
if (!Pueresponse.IsSuccessStatusCode)
|
|
{
|
|
Console.WriteLine($"Error al obtener PUESTOS: {Pueresponse.StatusCode}, {PueCont}");
|
|
return;
|
|
}
|
|
PuestoDisp = JsonConvert.DeserializeObject<List<PUESTOS>>(PueCont) ?? new List<PUESTOS>();
|
|
PuestoDisp = PuestoDisp.OrderBy(x => x.ORDEN).ToList();
|
|
// puestosdelapersona = PuestoDisp.Where(x => x.IDPERSONALNavigation?.IDPERSONA == idUsuActual).ToList();
|
|
|
|
|
|
|
|
if (idVidaActual != 0)
|
|
{
|
|
|
|
mostrarPuesto = true;
|
|
mostrarPuestosDisp = false;
|
|
var response = await client.GetAsync("/api/VIDA_ADMINISTRATIVA/" + idVidaActual.ToString());
|
|
var ResponseContent = await response.Content.ReadAsStringAsync();
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
Model = JsonConvert.DeserializeObject<VIDA_ADMINISTRATIVA>(ResponseContent) ?? new VIDA_ADMINISTRATIVA();
|
|
IDAPTOACTUAL = Model.IDMOTIVONavigation!.IDTIPOAPTOSNavigation!.IDTIPO;
|
|
IDMOTIVOACTUAL = Model.IDMOTIVONavigation.IDMOTIVO;
|
|
DESMOTIVOACTUAL = Model.IDMOTIVONavigation!.DESCRIPCION!;
|
|
|
|
if (Model.IDTIPOPERSONALNavigation is not null) { IDTIPOPERSONALACT = Model.IDTIPOPERSONALNavigation.IDTIPO; }
|
|
if (Model.NIVEL_OLDNavigation is not null) { NIVELACTUAL = Model!.NIVEL_OLDNavigation.IDNIVEL; }
|
|
IDSERVICIOACTUAL = Model!.IDSERVICIOADSCRITONavigation is null ? 0 : Model!.IDSERVICIOADSCRITONavigation.IDSERVICIO;
|
|
IDUNIDADADMINISTRATIVAACTUAL = Model!.IDUNIDADADMINISTRATIVANavigation is null ? 0 : Model!.IDUNIDADADMINISTRATIVANavigation.IDUNIDADADMINISTRATIVA;
|
|
// PUESTOACTUAL = Model.IDPUESTONavigation
|
|
if (Model.IDTRAMOCARRERAHORIZONTALNavigation is null) { IDTRAMOACTUAL = 0; }
|
|
else { IDTRAMOACTUAL = Model.IDTRAMOCARRERAHORIZONTALNavigation.IDENUMERACION; }
|
|
usuarioVida = Model.IDPERSONALNavigation!.APELLIDOS + "," + Model.IDPERSONALNavigation.NOMBRE;
|
|
IDPERSONASLINK = Model.IDPERSONALNavigation.IDPERSONA;
|
|
usuarioVida = Model.IDPERSONALNavigation.APELLIDOS + ", " + Model.IDPERSONALNavigation.NOMBRE;
|
|
Persona = Model.IDPERSONALNavigation;
|
|
LINKPERSONA = "/infoPersonas?cl=" + tsUtilidades.crypt.FEncS(Persona.NIF, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*", "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*", 875421649);
|
|
}
|
|
|
|
|
|
/*MOTIVOS*/
|
|
|
|
var idApto = IDAPTOACTUAL;
|
|
Expression<Func<MOTIVOS_ADMINISTRATIVOS, bool>> filtroMot = x =>
|
|
x.IDTIPOAPTOSNavigation!.IDTIPO == idApto;
|
|
var MotExpression = serializer.SerializeText(filtroMot);
|
|
var MotjsonContent = JsonConvert.SerializeObject(new { Expression = MotExpression });
|
|
var Motivoscontent = new StringContent(MotjsonContent, Encoding.UTF8, "application/json");
|
|
var Motivosresponse = await client.PostAsync("/api/MOTIVOS_ADMINISTRATIVOS/filtrar", Motivoscontent);
|
|
var MotCont = await Motivosresponse.Content.ReadAsStringAsync();
|
|
listMotivos = JsonConvert.DeserializeObject<List<MOTIVOS_ADMINISTRATIVOS>>(MotCont) ?? new List<MOTIVOS_ADMINISTRATIVOS>();
|
|
listMotivos = listMotivos.OrderBy(x => x.DESCRIPCION).ToList();
|
|
|
|
|
|
cargarGridLineas();
|
|
|
|
}
|
|
else
|
|
{
|
|
if (usuarioVida != null)
|
|
{
|
|
nueva = true;
|
|
/*PERSONA*/
|
|
var usu = idUsuActual;
|
|
Expression<Func<PERSONAS, bool>> filtroPer = x =>
|
|
x.IDPERSONA == usu;
|
|
var PerExpression = serializer.SerializeText(filtroPer);
|
|
var PerjsonContent = JsonConvert.SerializeObject(new { Expression = PerExpression });
|
|
var Percontent = new StringContent(PerjsonContent, Encoding.UTF8, "application/json");
|
|
var Perresponse = await client.PostAsync("/api/PERSONAS/getPersonaVidaAdm", Percontent);
|
|
var PerCont = await Perresponse.Content.ReadAsStringAsync();
|
|
Persona = JsonConvert.DeserializeObject<bdAntifraude.db.PERSONAS>(PerCont) ?? new PERSONAS();
|
|
LINKPERSONA = "/infoPersonas?cl=" + tsUtilidades.crypt.FEncS(Persona.NIF, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*", "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*", 875421649);
|
|
IDPERSONASLINK = Persona.IDPERSONA;
|
|
Model.NIVEL_OLD = Persona.IDNIVELRPT;
|
|
/*se tiene que vincular el navigation*/
|
|
if (Persona.IDGRADOPERSONALCONSOLIDADONavigation != null) { Model.NIVEL_OLD = Persona.IDGRADOPERSONALCONSOLIDADO; }
|
|
// Model.NRP = Persona.NRP;
|
|
Model.IDPERSONAL = Persona.IDPERSONA;
|
|
usuarioVida = Persona.APELLIDOS + ", " + Persona.NOMBRE;
|
|
IDPERSONASLINK = Persona.IDPERSONA;
|
|
mostrarPuesto = false;
|
|
mostrarNRP = false;
|
|
EsExterno = Persona.EXTERNO;
|
|
Expression<Func<PUESTOS, bool>> filP = x => x.IDPERSONAL == Persona.IDPERSONA;
|
|
var PEx = serializer.SerializeText(filP);
|
|
var Pjson = JsonConvert.SerializeObject(new { Expression = PEx });
|
|
var Pcontent = new StringContent(Pjson, Encoding.UTF8, "application/json");
|
|
var Presponse = await client.PostAsync("/api/PUESTOS/getActivos", Pcontent);
|
|
var PCont = await Presponse.Content.ReadAsStringAsync();
|
|
List<bdAntifraude.db.PUESTOS> lpue = JsonConvert.DeserializeObject<List<PUESTOS>>(PCont) ?? new List<PUESTOS>();
|
|
lpue = lpue.Where(x => x.IDRPT == IDRPT1).ToList();
|
|
if (lpue.Count > 0)
|
|
{
|
|
IDPUESTOACTUAL = lpue.First().IDPUESTO;
|
|
}
|
|
else
|
|
{
|
|
IDPUESTOACTUAL = 0;
|
|
}
|
|
|
|
|
|
|
|
/*Meter extension en PERSONAS CAROACTUAL*/
|
|
|
|
}
|
|
else
|
|
{
|
|
Navigation.NavigateTo("/Home");
|
|
}
|
|
}
|
|
|
|
/*PUESTO DE LA PERSONA*/
|
|
|
|
Expression<Func<PUESTOS, bool>> filtroPuePer = x => x.IDRPTNavigation != null && x.IDRPTNavigation.IDRPT == IDRPT1 && (x.IDPERSONAL == Persona.IDPERSONA || x.TITULAR == Persona.IDPERSONA);
|
|
var PuePerExpression = serializer.SerializeText(filtroPuePer);
|
|
var PuePerjsonContent = JsonConvert.SerializeObject(new { Expression = PuePerExpression });
|
|
var PuePercontent = new StringContent(PuePerjsonContent, Encoding.UTF8, "application/json");
|
|
var PuePerresponse = await client.PostAsync("/api/PUESTOS/Filtrar", PuePercontent);
|
|
var PuePerCont = await PuePerresponse.Content.ReadAsStringAsync();
|
|
if (!PuePerresponse.IsSuccessStatusCode)
|
|
{
|
|
Console.WriteLine($"Error al obtener PUESTOS: {PuePerresponse.StatusCode}, {PuePerCont}");
|
|
return;
|
|
}
|
|
puestosdelapersona = JsonConvert.DeserializeObject<List<PUESTOS>>(PuePerCont) ?? new List<PUESTOS>();
|
|
mostrar = false;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Console.WriteLine($"Error al obtener los datos: {e.Message}");
|
|
|
|
}
|
|
|
|
}
|
|
private void ValidarYActualizar(ChangeEventArgs e, string fieldName)
|
|
{
|
|
var value = e.Value?.ToString();
|
|
var field = new FieldIdentifier(Model, fieldName);
|
|
|
|
messageStore?.Clear(field);
|
|
|
|
if (fieldName == nameof(IDAPTOACTUAL) && value == "0")
|
|
{
|
|
messageStore?.Add(field, "Seleccione un acto administrativo.");
|
|
}
|
|
if (fieldName == nameof(IDMOTIVOACTUAL) && value == "0")
|
|
{
|
|
messageStore?.Add(field, "Seleccione una causa.");
|
|
}
|
|
if (fieldName == nameof(Model.FECHA) && value == null)
|
|
{
|
|
messageStore?.Add(field, "Se debe introducir una fecha de efecto.");
|
|
}
|
|
if (fieldName == nameof(IDPUESTODISACTUAL) && value == "0")
|
|
{
|
|
messageStore?.Add(field, "Selecciones un puesto disponible");
|
|
}
|
|
if (fieldName == nameof(IDTRAMOACTUAL) && value == "0")
|
|
{
|
|
messageStore?.Add(field, "Selecciones un tramo");
|
|
}
|
|
if (fieldName == nameof(IDTIPOPERSONALACT) && value == "0")
|
|
{
|
|
messageStore?.Add(field, "Selecciones un tipo de personal");
|
|
}
|
|
if (fieldName == nameof(IDOCUPACIONACTUAL) && value == "0")
|
|
{
|
|
messageStore?.Add(field, "Selecciones un caracter de ocupacion");
|
|
}
|
|
editContext?.NotifyValidationStateChanged();
|
|
}
|
|
private void guardarFormulario()
|
|
{
|
|
try
|
|
{
|
|
ValidarTodo();
|
|
|
|
if (!editContext!.GetValidationMessages().Any())
|
|
{
|
|
GuardarVida();
|
|
|
|
// messages.Add(new ToastMessage
|
|
// {
|
|
// Type = ToastType.Primary,
|
|
// Message = $"Guardado correctamente.",
|
|
// });
|
|
}
|
|
else
|
|
{
|
|
// messages.Add(new ToastMessage
|
|
// {
|
|
// Type = ToastType.Warning,
|
|
// Message = $"Debe rellenar los campos obligatorios.",
|
|
// });
|
|
}
|
|
|
|
}
|
|
catch (Exception)
|
|
{
|
|
// messages.Add(new ToastMessage
|
|
// {
|
|
// Type = ToastType.Danger,
|
|
// Message = $"Error al guardar.",
|
|
// });
|
|
}
|
|
|
|
}
|
|
private void ValidarTodo()
|
|
{
|
|
ValidarYActualizar(new ChangeEventArgs { Value = IDAPTOACTUAL }, nameof(IDAPTOACTUAL));
|
|
ValidarYActualizar(new ChangeEventArgs { Value = IDMOTIVOACTUAL }, nameof(IDMOTIVOACTUAL));
|
|
ValidarYActualizar(new ChangeEventArgs { Value = Model.FECHA }, nameof(Model.FECHA));
|
|
if (mostrarPuestosDisp == true)
|
|
{
|
|
ValidarYActualizar(new ChangeEventArgs { Value = IDPUESTODISACTUAL }, nameof(IDPUESTODISACTUAL));
|
|
}
|
|
if (mostrarTramo == true)
|
|
{
|
|
ValidarYActualizar(new ChangeEventArgs { Value = IDTRAMOACTUAL }, nameof(IDTRAMOACTUAL));
|
|
}
|
|
if (mostrarTipPer == true)
|
|
{
|
|
ValidarYActualizar(new ChangeEventArgs { Value = IDTIPOPERSONALACT }, nameof(IDTIPOPERSONALACT));
|
|
}
|
|
if (mostrarCaracter == true)
|
|
{
|
|
ValidarYActualizar(new ChangeEventArgs { Value = IDOCUPACIONACTUAL }, nameof(IDOCUPACIONACTUAL));
|
|
}
|
|
|
|
}
|
|
private string GetExternalValidationMessage(string fieldName)
|
|
{
|
|
var field = new FieldIdentifier(Model, fieldName);
|
|
return messageStore?[field]?.FirstOrDefault() ?? string.Empty;
|
|
}
|
|
protected void OcultarMenCuer() { mostrarMensajeCuerpo = false; }
|
|
protected void OcultarMenElim() { mostrarMensajeEliminar = false; }
|
|
protected void mostrarAvisoEliminar() { mostrarMensajeEliminar = true; }
|
|
protected void mostrarAvisoEliminarLinea(LINEASVIDAADMINISTRATIVA linea){lineaEditada = linea;mostrarMensajeEliminarLinea = true; }
|
|
protected void abrirAnadirLineaVida() { mostrarAnadirLineaVida = true; }
|
|
protected void abrirEditarLineaVida(LINEASVIDAADMINISTRATIVA linea) { mostrarEditarLineaVida = true; lineaEditada = linea; DESCRIPCIONLINEAVIDAED = linea.DESCRIPCION; IDTIPODOCUED = linea.IDTIPO; }
|
|
protected void cerrarAnadirLineaVida() { mostrarAnadirLineaVida = false; }
|
|
protected void cerrarEliminarLineaVida() { lineaEditada = null; mostrarAnadirLineaVida = false; }
|
|
protected void cerrarEditarLineaVida() { mostrarEditarLineaVida = false; }
|
|
protected void volver() { Navigation.NavigateTo(LINKPERSONA, forceLoad: true); }
|
|
protected string urlFich(int id)
|
|
{
|
|
return "/Ficheros?tip=VerLVA&id=" + id.ToString();
|
|
}
|
|
protected async Task<AutoCompleteDataProviderResult<bdAntifraude.db.PUESTOS>> CargarPuestos(AutoCompleteDataProviderRequest<bdAntifraude.db.PUESTOS> request)
|
|
{
|
|
|
|
var token = UserState.Token;
|
|
var client = HttpClientFactory.CreateClient();
|
|
client.BaseAddress = new Uri(Utilidades.urlSwagger());
|
|
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
|
|
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
|
|
var serializer = new ExpressionSerializer(new Serialize.Linq.Serializers.JsonSerializer());
|
|
int IDRPT1 = RPTACTUAL.IDRPT;
|
|
Expression<Func<PUESTOS, bool>> filtroPue = x => x.IDRPTNavigation != null && x.IDRPTNavigation.IDRPT == IDRPT1;
|
|
var PueExpression = serializer.SerializeText(filtroPue);
|
|
var PuejsonContent = JsonConvert.SerializeObject(new { Expression = PueExpression });
|
|
var Puecontent = new StringContent(PuejsonContent, Encoding.UTF8, "application/json");
|
|
var Pueresponse = await client.PostAsync("/api/PUESTOS/getActivos", Puecontent);
|
|
var PueCont = await Pueresponse.Content.ReadAsStringAsync();
|
|
|
|
PuestoDisp = JsonConvert.DeserializeObject<List<PUESTOS>>(PueCont) ?? new List<PUESTOS>();
|
|
|
|
return await Task.FromResult(request.ApplyTo(PuestoDisp));
|
|
|
|
}
|
|
protected async void CargarMotivos()
|
|
{
|
|
var idApto = IDAPTOACTUAL;
|
|
TIPOAPTOSADMINISTRATIVOS actoActual = TiposActos.FirstOrDefault(x => x.IDTIPO == IDAPTOACTUAL) ?? new TIPOAPTOSADMINISTRATIVOS();
|
|
var token = UserState.Token;
|
|
var client = HttpClientFactory.CreateClient();
|
|
client.BaseAddress = new Uri(Utilidades.urlSwagger());
|
|
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
|
|
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
|
|
Expression<Func<MOTIVOS_ADMINISTRATIVOS, bool>> filtro = x =>
|
|
x.IDTIPOAPTOSNavigation!.IDTIPO == idApto;
|
|
|
|
var serializer = new ExpressionSerializer(new Serialize.Linq.Serializers.JsonSerializer());
|
|
|
|
var serializedExpression = serializer.SerializeText(filtro);
|
|
var tramosjsonContent = JsonConvert.SerializeObject(new { Expression = serializedExpression });
|
|
var Motivoscontent = new StringContent(tramosjsonContent, Encoding.UTF8, "application/json");
|
|
var Motivosresponse = await client.PostAsync("/api/MOTIVOS_ADMINISTRATIVOS/filtrar", Motivoscontent);
|
|
var MotCont = await Motivosresponse.Content.ReadAsStringAsync();
|
|
listMotivos = JsonConvert.DeserializeObject<List<MOTIVOS_ADMINISTRATIVOS>>(MotCont) ?? new List<MOTIVOS_ADMINISTRATIVOS>();
|
|
listMotivos = listMotivos.OrderBy(x => x.DESCRIPCION).ToList();
|
|
|
|
if (actoActual.DESCRIPCION == "CONSOLIDACIÓN DE GRADO") { mostrarNivel = true; } else { mostrarNivel = false; }
|
|
if (actoActual.DESCRIPCION == "RECONOCIMIENTO TRAMO CARRERA HORIZONTAL") { mostrarTramo = true; } else { mostrarTramo = false; }
|
|
if (actoActual.DESCRIPCION == "TOMA POSESION") { mostrarCaracter = true; mostrarTipPer = true; mostrarPuestosDisp = true; } else { mostrarCaracter = false; mostrarTipPer = false; mostrarPuestosDisp = false; }
|
|
|
|
if (listMotivos.Count > 0)
|
|
{
|
|
IDMOTIVOACTUAL = listMotivos.First().IDMOTIVO;
|
|
}
|
|
StateHasChanged();
|
|
|
|
}
|
|
protected async void AnadirLineaVida()
|
|
{
|
|
mostrar = true;
|
|
await Task.Delay(1);
|
|
|
|
LINEASVIDAADMINISTRATIVA VA = new LINEASVIDAADMINISTRATIVA();
|
|
VA.IDTIPO = IDTIPODOCU;
|
|
VA.FECHASUBIDA = DateTime.Now;
|
|
VA.DESCRIPCION = DESCRIPCIONLINEAVIDA;
|
|
VA.IDVIDAADMIN = idVidaActual;
|
|
var VACreada = await Utilidades.NuevoObjeto<LINEASVIDAADMINISTRATIVA>(client, "/api/LINEASVIDAADMINISTRATIVA", VA);
|
|
|
|
if (Base64File is not null)
|
|
{
|
|
var serializer = new ExpressionSerializer(new Serialize.Linq.Serializers.JsonSerializer());
|
|
string ruta = "lineaVidaAdministrativa/" + VACreada.IDLINEAVIDAADMIN.ToString() + ".pdf";
|
|
var fichTrans = new AlmacenaFicheroAtransmitir();
|
|
fichTrans.IdRegistro = VACreada.IDLINEAVIDAADMIN;
|
|
fichTrans.Tabla = "LINEAVIDAADMINISTRATIVA";
|
|
fichTrans.Fichero = Base64File;
|
|
var jsonConsulta = JsonConvert.SerializeObject(fichTrans);
|
|
var content = new StringContent(jsonConsulta, Encoding.UTF8, "application/json");
|
|
var ficherotrans = await client.PostAsync("/api/Almacenamiento/almacenar-fichero", content);
|
|
var fichContent = await ficherotrans.Content.ReadAsStringAsync();
|
|
VACreada.RUTA = ruta;
|
|
VACreada = await Utilidades.ActualizarObjeto<LINEASVIDAADMINISTRATIVA>(client, "/api/LINEASVIDAADMINISTRATIVA/" + VACreada.IDLINEAVIDAADMIN, VACreada);
|
|
}
|
|
|
|
ENUMERACIONES tipoDocu = listTipoDocu.FirstOrDefault(x => x.IDENUMERACION == IDTIPODOCU) ?? new ENUMERACIONES();
|
|
if (tipoDocu.DESCRIPCION == "RECONOCIMIENTO DE TRIENIOS/ANTIGÜEDAD") /* && (Persona.EXTERNO is not null && Persona.EXTERNO == 0) || (Persona.EXTERNO == 1 && Persona.CAROCUACTUAL.ToUpper().Contains("DEFINITIVO"))) */
|
|
{
|
|
if (Persona.FECHACUMPLIMIENTOPROXTRIENIO is not null) { Persona.FECHACUMPLIMIENTOPROXTRIENIO = Persona.FECHACUMPLIMIENTOPROXTRIENIO.Value.AddYears(3); }
|
|
else { Persona.FECHACUMPLIMIENTOPROXTRIENIO = Model.FECHA!.Value.AddYears(3); }
|
|
|
|
if (Persona?.IDADSCRIPCIONRPTNavigation?.DESCRIPCION?.ToUpper() == "LABORAL")
|
|
{
|
|
switch (Persona?.IDGRUPOFUNCIONARIONavigation?.DESCRIPCION)
|
|
{
|
|
case "A1":
|
|
Model.GRUPOTNavigation!.GRUPO1 = "I";
|
|
break;
|
|
case "A2":
|
|
Model.GRUPOTNavigation!.GRUPO1 = "II";
|
|
break;
|
|
case "C1":
|
|
Model.GRUPOTNavigation!.GRUPO1 = "III";
|
|
break;
|
|
case "C2":
|
|
Model.GRUPOTNavigation!.GRUPO1 = "IV";
|
|
break;
|
|
case "E":
|
|
Model.GRUPOTNavigation!.GRUPO1 = "V";
|
|
break;
|
|
}
|
|
}
|
|
Expression<Func<TRIENIOS, bool>> filtro = x =>
|
|
x.IDPERSONAL == Persona!.IDPERSONA && x.GRUPO == Model.GRUPOTNavigation!.GRUPO1;
|
|
;
|
|
List<TRIENIOS> qtry = await Utilidades.ObtenerObjeto<List<TRIENIOS>>(client, "/api/TRIENIOS/filtrar", filtro);
|
|
|
|
if (qtry.Count > 0)
|
|
{
|
|
TRIENIOS trienio = qtry.First();
|
|
trienio.TC = trienio.TC + 1;
|
|
var actualizarTrienio = await Utilidades.ActualizarObjeto<TRIENIOS>(client, "/api/TRIENIOS/" + trienio.IDTRIENIO, trienio);
|
|
}
|
|
else
|
|
{
|
|
TRIENIOS trienio = new TRIENIOS();
|
|
trienio.IDPERSONAL = Model.IDPERSONAL;
|
|
trienio.IDGRUPO = Model.GRUPOT;
|
|
trienio.TC = 1;
|
|
var actualizarTrienio = await Utilidades.NuevoObjeto<TRIENIOS>(client, "/api/TRIENIOS", trienio);
|
|
}
|
|
var actualizarPer = await Utilidades.ActualizarObjeto<PERSONAS>(client, "/api/PERSONAS/" + Persona?.IDPERSONA, Persona!);
|
|
}
|
|
if (tipoDocu?.DESCRIPCION?.Trim() == "PROPUESTA DE RECONOCIMIENTO DE GRADO" || tipoDocu?.DESCRIPCION?.Trim() == "RECONOCIMIENTO DE GRADO")
|
|
{
|
|
if (Persona?.FECHACONSOLIDACIONGRADO < Model.FECHA)
|
|
{
|
|
Persona!.IDGRADOPERSONALCONSOLIDADO = Model.NIVELC;
|
|
Persona.FECHACONSOLIDACIONGRADO = Model.FECHA;
|
|
}
|
|
|
|
CONSOLIDACION_GRADO ComGra = new CONSOLIDACION_GRADO();
|
|
ComGra.NIVEL = int.Parse(Model.NIVEL_OLDNavigation!.NIVEL1!);
|
|
ComGra.IDNIVEL = Model.NIVELC;
|
|
ComGra.IDPERSONAL = Model.IDPERSONAL;
|
|
ComGra.FECHA_EFECTO = Model.FECHA;
|
|
ComGra.FECHA_RESOLUCION = Model.FECHARESOLUCION;
|
|
var actualizarPer = await Utilidades.ActualizarObjeto<PERSONAS>(client, "/api/PERSONAS/" + Persona.IDPERSONA, Persona);
|
|
var crearComGra = await Utilidades.NuevoObjeto<CONSOLIDACION_GRADO>(client, "/api/CONSOLIDACION_GRADO", ComGra);
|
|
}
|
|
if (tipoDocu?.DESCRIPCION == "RECONOCIMIENTO DE TRAMO COMPLEMENTO DE CARRERA")
|
|
{
|
|
Expression<Func<COMPLEMENTOSCARRERA, bool>> filtroComCar = x =>
|
|
x.IDPERSONA == Persona!.IDPERSONA;
|
|
List<COMPLEMENTOSCARRERA> TraComCarr = await Utilidades.ObtenerObjeto<List<COMPLEMENTOSCARRERA>>(client, "/api/COMPLEMENTOSCARRERA/filtrar", filtroComCar);
|
|
TraComCarr = TraComCarr.OrderByDescending(x => x.FECHAINICIO).ToList();
|
|
if (TraComCarr.Count > 0)
|
|
{
|
|
COMPLEMENTOSCARRERA comCarAct = TraComCarr.Where(x => x.FECHAFIN is null).First();
|
|
comCarAct.FECHAFIN = Model.FECHA!.Value.AddDays(-1);
|
|
var actualizarComCarAct = await Utilidades.ActualizarObjeto<COMPLEMENTOSCARRERA>(client, "/api/COMPLEMENTOSCARRERA/" + comCarAct.IDCOMCARR, comCarAct);
|
|
}
|
|
COMPLEMENTOSCARRERA ComCarr = new COMPLEMENTOSCARRERA();
|
|
ComCarr.IDPERSONA = Model.IDPERSONAL;
|
|
ComCarr.IDGRUPO = Model.GRUPOT;
|
|
ComCarr.IDTRAMO = Model.IDTRAMOCARRERAHORIZONTAL;
|
|
ComCarr.FECHAINICIO = Model.FECHA;
|
|
var actualizarComCar = await Utilidades.NuevoObjeto<COMPLEMENTOSCARRERA>(client, "/api/COMPLEMENTOSCARRERA", ComCarr);
|
|
}
|
|
if (tipoDocu?.DESCRIPCION == "TOMA DE POSESION")
|
|
{
|
|
Expression<Func<VIDA_ADMINISTRATIVA, bool>> filtroPrimTomaPos = x =>
|
|
x.IDMOTIVONavigation!.IDTIPOAPTOSNavigation!.IDTIPO == Model.IDMOTIVONavigation!.IDTIPOAPTOSNavigation!.IDTIPO && x.IDPERSONAL == Persona!.IDPERSONA;
|
|
List<VIDA_ADMINISTRATIVA> PrimeraTomaPosesion = await Utilidades.ObtenerObjeto<List<VIDA_ADMINISTRATIVA>>(client, "/api/VIDA_ADMINISTRATIVA/filtrar", filtroPrimTomaPos);
|
|
if (PrimeraTomaPosesion.Count == 1)
|
|
{
|
|
Persona!.FECHAALTA = Model.FECHA;
|
|
Persona.FECHAALTAPAR = Model.FECHA;
|
|
var actualizarPer = await Utilidades.ActualizarObjeto<PERSONAS>(client, "/api/PERSONAS/" + Persona.IDPERSONA, Persona);
|
|
}
|
|
}
|
|
if (tipoDocu?.DESCRIPCION.Contains("CESE") == true)
|
|
{
|
|
Expression<Func<PUESTOS, bool>> filtroPuesto = x =>
|
|
x.IDRPT == RPTACTUAL.IDRPT && x.IDPERSONAL == Model.IDPERSONAL;
|
|
List<PUESTOS> listPuestoPers = await Utilidades.ObtenerObjeto<List<PUESTOS>>(client, "/api/PUESTOS/filtrar", filtroPuesto);
|
|
if (listPuestoPers.Count == 1)
|
|
{
|
|
PUESTOS pue = listPuestoPers.First();
|
|
pue.IDPERSONAL = null;
|
|
if ((pue.IDOCUPACIONNavigation?.OCUPACION1 == "DEF" || pue.IDOCUPACIONNavigation?.OCUPACION1 == "FIJO") && Model.CAUSA.Contains("CON RESERVA") == false && Model.CAUSA.Contains("COMISIÓN DE SERVICIOS OTRA INSTITUCIÓN") == false) { pue.TITULAR = null; }
|
|
pue.ESTADO = "L";
|
|
if ((Model.CAUSA.Contains("CON RESERVA") || Model.CAUSA.Trim() == "COMISIÓN DE SERVICIOS OTRA INSTITUCIÓN") && pue.TITULAR is not null && pue.IDPERSONAL == pue.TITULAR) { pue.ESTADO = "V"; }
|
|
// if (pue.IDRPTDESNavigation!.VIRTUAL)
|
|
// {
|
|
// pue.ESTADO = "P";
|
|
// Expression<Func<DOTACION, bool>> filtroDot = x =>
|
|
// x.DOTACION1 == "ND";
|
|
// List<DOTACION> IDNODOTADAL = await Utilidades.ObtenerObjeto<List<DOTACION>>(client, "/api/DOTACION/filtrar", filtroDot);
|
|
// pue.IDDOTACION = IDNODOTADAL.First().IDDOTACION;
|
|
// }
|
|
pue.IDOCUPACION = null;
|
|
var actualizarPue = await Utilidades.ActualizarObjeto<PUESTOS>(client, "/api/PUESTOS/" + pue.IDPUESTO, pue);
|
|
}
|
|
}
|
|
|
|
cargarGridLineas();
|
|
cerrarAnadirLineaVida();
|
|
mostrar = false;
|
|
StateHasChanged();
|
|
|
|
}
|
|
protected async void EditarLineaVida()
|
|
{
|
|
LINEASVIDAADMINISTRATIVA VA = lineaEditada;
|
|
// VA.IDTIPO = IDTIPODOCUED;
|
|
// VA.FECHASUBIDA = DateTime.Now;
|
|
VA.DESCRIPCION = DESCRIPCIONLINEAVIDAED;
|
|
VA.IDVIDAADMIN = idVidaActual;
|
|
var VACreada = await Utilidades.ActualizarObjeto<LINEASVIDAADMINISTRATIVA>(client, "/api/LINEASVIDAADMINISTRATIVA/"+lineaEditada.IDLINEAVIDAADMIN.ToString(), VA);
|
|
|
|
if (Base64FileEd is not null && Base64FileEd != "")
|
|
{
|
|
var serializer = new ExpressionSerializer(new Serialize.Linq.Serializers.JsonSerializer());
|
|
string ruta = "lineaVidaAdministrativa/" + lineaEditada.IDLINEAVIDAADMIN.ToString() + ".pdf";
|
|
var fichTrans = new AlmacenaFicheroAtransmitir();
|
|
fichTrans.IdRegistro = lineaEditada.IDLINEAVIDAADMIN;
|
|
fichTrans.Tabla = "LINEAVIDAADMINISTRATIVA";
|
|
fichTrans.Fichero = Base64FileEd;
|
|
var jsonConsulta = JsonConvert.SerializeObject(fichTrans);
|
|
var content = new StringContent(jsonConsulta, Encoding.UTF8, "application/json");
|
|
var ficherotrans = await client.PostAsync("/api/Almacenamiento/almacenar-fichero", content);
|
|
var fichContent = await ficherotrans.Content.ReadAsStringAsync();
|
|
}
|
|
cerrarEditarLineaVida();
|
|
StateHasChanged();
|
|
|
|
}
|
|
protected async void modActoAdministrativo()
|
|
{
|
|
var token = UserState.Token;
|
|
var client = HttpClientFactory.CreateClient();
|
|
client.BaseAddress = new Uri(Utilidades.urlSwagger());
|
|
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
|
|
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
|
|
var serializer = new ExpressionSerializer(new Serialize.Linq.Serializers.JsonSerializer());
|
|
|
|
var descripcion = TiposActos?.FirstOrDefault(x => x.IDTIPO == IDAPTOACTUAL)?.DESCRIPCION ?? "";
|
|
if (descripcion == "TOMA POSESION" && nueva == true)
|
|
{
|
|
int IDRPT1 = RPTACTUAL.IDRPT;
|
|
Expression<Func<PUESTOS, bool>> filtroPue = x => x.IDRPTNavigation != null && x.IDRPTNavigation.IDRPT == IDRPT1 && x.ESTADO != null && (x.ESTADO.Trim() == "L" && x.IDPERSONAL != null) || x.ESTADO == "V";
|
|
var PueExpression = serializer.SerializeText(filtroPue);
|
|
var PuejsonContent = JsonConvert.SerializeObject(new { Expression = PueExpression });
|
|
var Puecontent = new StringContent(PuejsonContent, Encoding.UTF8, "application/json");
|
|
var Pueresponse = await client.PostAsync("/api/PUESTOS/getActivos", Puecontent);
|
|
var PueCont = await Pueresponse.Content.ReadAsStringAsync();
|
|
if (!Pueresponse.IsSuccessStatusCode)
|
|
{
|
|
Console.WriteLine($"Error al obtener PUESTOS: {Pueresponse.StatusCode}, {PueCont}");
|
|
return;
|
|
}
|
|
PuestoDisp = JsonConvert.DeserializeObject<List<PUESTOS>>(PueCont) ?? new List<PUESTOS>();
|
|
mostrarPuestosDisp = true;
|
|
mostrarCaracter = true;
|
|
mostrarTipPer = true;
|
|
}
|
|
if (descripcion == "RECONOCIMIENTO TRAMO CARRERA HORIZONTAL" && nueva == true)
|
|
{
|
|
mostrarTramo = true;
|
|
}
|
|
if (descripcion == "CONSOLIDACIÓN DE GRADO" && nueva == true)
|
|
{
|
|
mostrarNivel = true;
|
|
}
|
|
}
|
|
protected async void cargarGridLineas()
|
|
{
|
|
var token = UserState.Token;
|
|
var client = HttpClientFactory.CreateClient();
|
|
client.BaseAddress = new Uri(Utilidades.urlSwagger());
|
|
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
|
|
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
|
|
var serializer = new ExpressionSerializer(new Serialize.Linq.Serializers.JsonSerializer());
|
|
int IDVIDA = Model.IDVIDA;
|
|
Expression<Func<LINEASVIDAADMINISTRATIVA, bool>> filtroPue = x => x.IDVIDAADMIN == IDVIDA;
|
|
var PueExpression = serializer.SerializeText(filtroPue);
|
|
var PuejsonContent = JsonConvert.SerializeObject(new { Expression = PueExpression });
|
|
var Puecontent = new StringContent(PuejsonContent, Encoding.UTF8, "application/json");
|
|
var Pueresponse = await client.PostAsync("/api/LINEASVIDAADMINISTRATIVA/LineasVidaAdminGrid", Puecontent);
|
|
var PueCont = await Pueresponse.Content.ReadAsStringAsync();
|
|
if (!Pueresponse.IsSuccessStatusCode)
|
|
{
|
|
Console.WriteLine($"Error al obtener LINEASVIDAADMINISTRATIVA: {Pueresponse.StatusCode}, {PueCont}");
|
|
return;
|
|
}
|
|
listLineasVida = JsonConvert.DeserializeObject<List<LINEASVIDAADMINISTRATIVA>>(PueCont) ?? new List<LINEASVIDAADMINISTRATIVA>();
|
|
listLineasVida = listLineasVida.OrderBy(x => x.FECHASUBIDA).ToList();
|
|
StateHasChanged();
|
|
}
|
|
protected async void GuardarVida()
|
|
{
|
|
|
|
MOTIVOS_ADMINISTRATIVOS motivo = listMotivos.FirstOrDefault(x => x.IDMOTIVO == IDMOTIVOACTUAL) ?? new MOTIVOS_ADMINISTRATIVOS();
|
|
TIPOAPTOSADMINISTRATIVOS actoActual = TiposActos.FirstOrDefault(x => x.IDTIPO == IDAPTOACTUAL) ?? new TIPOAPTOSADMINISTRATIVOS();
|
|
NIVEL Nivel = Niveles.FirstOrDefault(x => x.IDNIVEL == NIVELACTUAL) ?? new NIVEL();
|
|
Model.IDMOTIVO = IDMOTIVOACTUAL;
|
|
|
|
if (Persona.IDCUERPORPT is null)
|
|
{
|
|
mostrarMensajeCuerpo = true;
|
|
return;
|
|
/*mostrar Mensaje cuerpo*/
|
|
}
|
|
Model.IDSERVICIOADSCRITO =null;
|
|
Model.IDUNIDADADMINISTRATIVA =null;
|
|
// Model.IDSERVICIOADSCRITO = IDSERVICIOACTUAL;
|
|
Model.NRP = Persona.NRP;
|
|
|
|
if (actoActual.DESCRIPCION == "TOMA POSESION" && nueva == true)
|
|
{
|
|
puestoElegido = PuestoDisp.FirstOrDefault(x => x.IDPUESTO == IDPUESTODISACTUAL) ?? new PUESTOS();
|
|
OCUPACION ocuElegida = Ocupaciones.FirstOrDefault(x => x.IDOCUPACION == IDOCUPACIONACTUAL) ?? new OCUPACION();
|
|
|
|
puestoElegido.IDPERSONAL = IDPERSONASLINK;
|
|
puestoElegido.IDOCUPACION = IDOCUPACIONACTUAL;
|
|
puestoElegido.ESTADO = "O";
|
|
if (ocuElegida.DESCRIPCION!.Contains("PRO")) { puestoElegido.ESTADO = "L"; };
|
|
Model.OCUPACION_OLD = IDOCUPACIONACTUAL;
|
|
if (ocuElegida.DESCRIPCION.ToUpper() == "DEFINITIVA" || ocuElegida.DESCRIPCION.ToUpper() == "DEFINITIVO") { puestoElegido.TITULAR = IDPERSONASLINK; };
|
|
if (puestoElegido.IDRPTDESNavigation?.VIRTUAL == true)
|
|
{
|
|
DOTACION dotacionVir = listDotacion.FirstOrDefault(x => x.DOTACION1 == "DO") ?? new DOTACION();
|
|
puestoElegido.IDDOTACION = dotacionVir!.IDDOTACION;
|
|
}
|
|
/*guardar puesto*/
|
|
var respuestaGuardarPuesto = await Utilidades.ActualizarObjeto<bdAntifraude.db.PUESTOS>(client, "/api/PUESTOS/" + IDPUESTODISACTUAL, puestoElegido);
|
|
var Pueresponse = await client.GetAsync("/api/PUESTOS/" + IDPUESTODISACTUAL);
|
|
var PueCont = await Pueresponse.Content.ReadAsStringAsync();
|
|
puestoElegido = JsonConvert.DeserializeObject<PUESTOS>(PueCont) ?? new PUESTOS();
|
|
|
|
if ((Persona.IDADSCRIPCIONRPTNavigation?.IDTIPO != IDTIPOPERSONALACT || puestoElegido.IDRPTDESNavigation?.CUERPO1Navigation?.IDCUERPO != Persona.IDCUERPORPTNavigation?.IDCUERPO) && Persona.EXTERNO == 0)
|
|
{
|
|
string Ads = TiposPersonal?.FirstOrDefault(x => x.IDTIPO == IDTIPOPERSONALACT)?.TIPO_PERSONAL?.Trim() ?? "";
|
|
string DNI = Persona?.NIF?.Substring(0, Persona.NIF.Length - 1)?.PadLeft(9, '0') ?? "";
|
|
string NRPCal = DNI;//+ "C0" + Ads.Trim() + puestoElegido?.IDRPTDESNavigation?.CUERPO1Navigation?.CUERPO1?.Trim();
|
|
Persona!.NRP_OLD = Persona.NRP;
|
|
Persona.NRP = NRPCal;
|
|
Persona.IDADSCRIPCIONRPT = IDTIPOPERSONALACT;
|
|
// Persona.IDCUERPORPT = puestoElegido?.IDRPTDESNavigation?.CUERPO1Navigation?.IDCUERPO;
|
|
Model.NRP = Persona.NRP;
|
|
/*guardar persona*/
|
|
var respuestaGuardarPersona = await Utilidades.ActualizarObjeto<bdAntifraude.db.PERSONAS>(client, "/api/PERSONAS/" + IDPERSONASLINK, Persona);
|
|
|
|
|
|
var usu = idUsuActual;
|
|
Expression<Func<PERSONAS, bool>> filtroPer = x =>
|
|
x.IDPERSONA == usu;
|
|
var PerExpression = serializer?.SerializeText(filtroPer);
|
|
var PerjsonContent = JsonConvert.SerializeObject(new { Expression = PerExpression });
|
|
var Percontent = new StringContent(PerjsonContent, Encoding.UTF8, "application/json");
|
|
var Perresponse = await client.PostAsync("/api/PERSONAS/getPersonaVidaAdm", Percontent);
|
|
var PerCont = await Perresponse.Content.ReadAsStringAsync();
|
|
Persona = JsonConvert.DeserializeObject<PERSONAS>(PerCont) ?? new PERSONAS();
|
|
// Persona = await Utilidades.ObtenerObjeto<PERSONAS>(client, "/api/PERSONA/" + Persona.IDPERSONA);
|
|
}
|
|
}
|
|
else if (actoActual.DESCRIPCION == "CESE" && nueva == true)
|
|
{
|
|
var Puerespons = await client.GetAsync("/api/PUESTOS/" + IDPUESTOACTUAL);
|
|
var PueCon = await Puerespons.Content.ReadAsStringAsync();
|
|
bdAntifraude.db.PUESTOS puestoElegido = JsonConvert.DeserializeObject<PUESTOS>(PueCon) ?? new PUESTOS();
|
|
OCUPACION ocuElegida = Ocupaciones.FirstOrDefault(x => x.IDOCUPACION == puestoElegido.IDOCUPACION) ?? new OCUPACION();
|
|
puestoElegido.ESTADO = "L";
|
|
puestoElegido.IDOCUPACION = null;
|
|
puestoElegido.IDOCUPACION = null;
|
|
if (ocuElegida.DESCRIPCION!.Contains("PRO"))
|
|
{
|
|
puestoElegido.IDPERSONAL = null;
|
|
}
|
|
if (ocuElegida.DESCRIPCION.ToUpper() == "DEFINITIVA" || ocuElegida.DESCRIPCION.ToUpper() == "DEFINITIVO")
|
|
{
|
|
puestoElegido.IDPERSONAL = null;
|
|
puestoElegido.TITULAR = null;
|
|
}
|
|
if (puestoElegido.IDRPTDESNavigation?.VIRTUAL == true)
|
|
{
|
|
DOTACION idnodotada = listDotacion.FirstOrDefault(x => x.DOTACION1?.Trim() == "DO") ?? new DOTACION();
|
|
puestoElegido.IDDOTACION = idnodotada.IDDOTACION;
|
|
}
|
|
var respuestaGuardarPuesto = await Utilidades.ActualizarObjeto<bdAntifraude.db.PUESTOS>(client, "/api/PUESTOS/" + IDPUESTOACTUAL, puestoElegido);
|
|
var Pueresponse = await client.GetAsync("/api/PUESTOS/" + IDPUESTOACTUAL);
|
|
var PueCont = await Pueresponse.Content.ReadAsStringAsync();
|
|
puestoElegido = JsonConvert.DeserializeObject<PUESTOS>(PueCont) ?? new PUESTOS();
|
|
|
|
}
|
|
if (nueva == true)
|
|
{
|
|
GRUPO Grupo = await Utilidades.ObtenerObjeto<GRUPO>(client, "/api/GRUPO/" + Persona.IDCUERPORPTNavigation.IDGRUPO);
|
|
Model.IDTIPOPERSONAL = IDTIPOPERSONALACT;
|
|
if (Model.IDTIPOPERSONAL == 0){ Model.IDTIPOPERSONAL = null; };
|
|
|
|
if (puestosdelapersona.Count == 1 && puestoElegido == null)
|
|
{
|
|
Puesto = puestosdelapersona.First();
|
|
}
|
|
else
|
|
{
|
|
if (puestosdelapersona.Count != 0 && puestoElegido == null)
|
|
{
|
|
Puesto = puestosdelapersona.Last();
|
|
Expression<Func<bdAntifraude.db.PUESTOS, bool>> filtro = x =>
|
|
x.IDPUESTO == puestosdelapersona.First().IDPUESTO;
|
|
List<bdAntifraude.db.PUESTOS> listpuestoanterior = await Utilidades.ObtenerObjeto<List<bdAntifraude.db.PUESTOS>>(client, "/api/PUESTOS/filtrar", filtro);
|
|
bdAntifraude.db.PUESTOS puestoanterior = listpuestoanterior.First();
|
|
puestoanterior.ESTADO = "L";
|
|
puestoanterior.IDPERSONALNavigation!.IDPERSONA = 0;
|
|
puestoanterior.TITULARNavigation!.IDPERSONA = 0;
|
|
/*actualizar puestoanterior*/
|
|
var respuestaGuardarPuestoAnterior = await Utilidades.ActualizarObjeto<bdAntifraude.db.PUESTOS>(client, "/api/PUESTOS/" + puestoanterior.IDPUESTO, puestoanterior);
|
|
}
|
|
else
|
|
{
|
|
Puesto = puestoElegido;
|
|
}
|
|
}
|
|
|
|
if (actoActual.DESCRIPCION == "RECONOCIMIENTO TRAMO CARRERA HORIZONTAL" && nueva == true)
|
|
{
|
|
Model.OBSERVACIONES = "Reconocimiento de " + TramosComp?.FirstOrDefault(x => x.IDENUMERACION == IDTRAMOACTUAL)?.DESCRIPCION;
|
|
Model.IDTRAMOCARRERAHORIZONTAL = IDTRAMOACTUAL;
|
|
}
|
|
if (Puesto is not null) { Model.DENOMINACION_OLD = Puesto.IDRPTDESNavigation?.DENOMINACION; }
|
|
if (Puesto is not null && actoActual.DESCRIPCION != "CONSOLIDACIÓN DE GRADO")
|
|
{
|
|
Model.NIVELC = Puesto.IDRPTDESNavigation?.IDNIVEL_RPT;
|
|
Model.NIVEL_OLD = Puesto.IDRPTDESNavigation?.IDNIVEL_RPT;
|
|
}
|
|
else if (NIVELACTUAL != 0)
|
|
{
|
|
Model.NIVELC = Nivel.IDNIVEL;
|
|
Model.NIVEL_OLD = Nivel.IDNIVEL;
|
|
}
|
|
else
|
|
{
|
|
Model.NIVELC = Persona.IDNIVELRPT;
|
|
Model.NIVEL_OLD = Persona.IDNIVELRPT;
|
|
}
|
|
if (Grupo is not null) { Model.GRUPOT = Grupo.IDGRUPO; };
|
|
if (Puesto is not null)
|
|
{
|
|
if (Puesto.IDOCUPACION is not null) { Model.OCUPACION_OLD = Puesto.IDOCUPACION; Model.IDPUESTO = Puesto.IDPUESTO; };
|
|
}
|
|
/*Guardar vida administrativa*/
|
|
var respuestaGuardarNuevaVida = await Utilidades.NuevoObjeto<VIDA_ADMINISTRATIVA>(client, "/api/VIDA_ADMINISTRATIVA", Model);
|
|
|
|
Navigation.NavigateTo(LINKPERSONA, forceLoad: true);
|
|
}
|
|
else
|
|
{
|
|
/*Guardar vida administrativa*/
|
|
var respuestaGuardarVida = await Utilidades.ActualizarObjeto<VIDA_ADMINISTRATIVA>(client, "/api/VIDA_ADMINISTRATIVA/" + Model.IDVIDA, Model);
|
|
Navigation.NavigateTo(LINKPERSONA, forceLoad: true);
|
|
// var JsonModVida = JsonConvert.SerializeObject(Model);
|
|
// var serv = await client.PostAsync("/api/SERVICIOS/" +Model.IDVIDA.ToString(),JsonModVida);
|
|
// var servContent = await serv.Content.ReadAsStringAsync();
|
|
// if (serv.IsSuccessStatusCode) { listServicios = JsonConvert.DeserializeObject<List<SERVICIOS>>(servContent); }
|
|
// listServicios.OrderBy(x => x.ORDEN);
|
|
}
|
|
}
|
|
protected async void BorrarVida()
|
|
{
|
|
var dot = await client.DeleteAsync("/api/VIDA_ADMINISTRATIVA/" + idVidaActual);
|
|
var dotContent = await dot.Content.ReadAsStringAsync();
|
|
if (dot.IsSuccessStatusCode) { Navigation.NavigateTo(LINKPERSONA, forceLoad: true); }
|
|
|
|
}
|
|
protected async void BorrarLineaVida()
|
|
{
|
|
var idlinea = lineaEditada.IDLINEAVIDAADMIN;
|
|
var dot = await client.DeleteAsync("/api/LINEASVIDAADMINISTRATIVA/" + idlinea);
|
|
var dotContent = await dot.Content.ReadAsStringAsync();
|
|
if (dot.IsSuccessStatusCode)
|
|
{
|
|
|
|
var fichTrans = new AlmacenaFicheroAtransmitir();
|
|
fichTrans.IdRegistro = idlinea;
|
|
fichTrans.Tabla = "LINEAVIDAADMINISTRATIVA";
|
|
var jsonConsulta = JsonConvert.SerializeObject(fichTrans);
|
|
var content = new StringContent(jsonConsulta, Encoding.UTF8, "application/json");
|
|
var ficherotrans = await client.PostAsync("/api/Almacenamiento/eliminar-fichero", content);
|
|
var fichContent = await ficherotrans.Content.ReadAsStringAsync();
|
|
|
|
}
|
|
cargarGridLineas();
|
|
cerrarEliminarLineaVida();
|
|
mostrar = false;
|
|
StateHasChanged();
|
|
}
|
|
private void abrirPopupGestionLinea(LINEASVIDAADMINISTRATIVA objeto)
|
|
{
|
|
DESCRIPCIONLINEAVIDAED = objeto.DESCRIPCION!;
|
|
IDTIPODOCUED = objeto.IDTIPO;
|
|
lineaEditada = objeto;
|
|
}
|
|
private async Task LoadFile(InputFileChangeEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
var file = e.File;
|
|
|
|
// Validación del tamaño del archivo (10 MB máximo)
|
|
const long maxFileSize = 10 * 1024 * 1024; // 10 MB
|
|
if (file.Size > maxFileSize)
|
|
{
|
|
Console.WriteLine("El archivo es demasiado grande. Tamaño máximo permitido: 10 MB.");
|
|
return;
|
|
}
|
|
|
|
// Leer el archivo en un stream
|
|
using var stream = file.OpenReadStream(maxFileSize);
|
|
using var memoryStream = new MemoryStream();
|
|
await stream.CopyToAsync(memoryStream);
|
|
|
|
// Obtener los bytes del archivo
|
|
var fileBytes = memoryStream.ToArray();
|
|
|
|
// Convertir los bytes a Base64
|
|
Base64File = Convert.ToBase64String(fileBytes);
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Console.WriteLine($"Error al cargar el archivo: {ex.Message}");
|
|
}
|
|
}
|
|
private async Task LoadFile1(InputFileChangeEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
var file = e.File;
|
|
|
|
// Validación del tamaño del archivo (10 MB máximo)
|
|
const long maxFileSize = 10 * 1024 * 1024; // 10 MB
|
|
if (file.Size > maxFileSize)
|
|
{
|
|
Console.WriteLine("El archivo es demasiado grande. Tamaño máximo permitido: 10 MB.");
|
|
return;
|
|
}
|
|
|
|
// Leer el archivo en un stream
|
|
using var stream = file.OpenReadStream(maxFileSize);
|
|
using var memoryStream = new MemoryStream();
|
|
await stream.CopyToAsync(memoryStream);
|
|
|
|
// Obtener los bytes del archivo
|
|
var fileBytes = memoryStream.ToArray();
|
|
|
|
// Convertir los bytes a Base64
|
|
Base64FileEd = Convert.ToBase64String(fileBytes);
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Console.WriteLine($"Error al cargar el archivo: {ex.Message}");
|
|
}
|
|
}
|
|
private void ShowDropdown()
|
|
{
|
|
showDropdown = true;
|
|
}
|
|
private async void HideDropdownAfterDelay()
|
|
{
|
|
// Pequeño delay para no cerrar el dropdown antes de poder hacer clic
|
|
// (opcional, puedes eliminarlo si no es necesario)
|
|
await Task.Delay(200);
|
|
showDropdown = false;
|
|
StateHasChanged();
|
|
}
|
|
private IEnumerable<PUESTOS> FiltrarPuestos(IEnumerable<PUESTOS> puestos, string text)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(text))
|
|
{
|
|
// Sin texto: muestra todos
|
|
return puestos.OrderBy(p => p.DESPUESCOM);
|
|
}
|
|
else
|
|
{
|
|
// Con texto: filtramos
|
|
return puestos
|
|
.Where(p => p.DESPUESCOM.Contains(text, StringComparison.OrdinalIgnoreCase))
|
|
.OrderBy(p => p.DESPUESCOM);
|
|
}
|
|
}
|
|
private void SelectPuesto(PUESTOS puesto)
|
|
{
|
|
filterText = puesto.DESPUESCOM;
|
|
IDPUESTODISACTUAL = puesto.IDPUESTO;
|
|
showDropdown = false;
|
|
}
|
|
} |