Files
Antifraude.Net/Antifraude.Net/RegistroPersonalAN/Components/Pages/InfoVidaAdministrativa.razor
2026-06-18 10:48:56 +02:00

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;
}
}