using GPW.CORE.Data.DbModels; using GPW.CORE.Data.DTO; using GPW.CORE.Data.Services; using GPW.CORE.WRKLOG.Components.Compo; using Microsoft.AspNetCore.Components; using System.Threading.Tasks; using static EgwCoreLib.Razor.Toggler; namespace GPW.CORE.WRKLOG.Components.Pages { public partial class DayOff { #region Protected Fields protected int anno = DateTime.Today.Year; protected DateTime oggi = DateTime.Today; protected DateTime dtMax = DateTime.Today.AddMonths(1); protected DateTime dtMin = DateTime.Today; protected int numMesi = 6; #endregion Protected Fields #region Protected Properties [Inject] protected MessageService AppMServ { get; set; } = null!; [Inject] protected GpwDataService DataService { get; set; } = null!; protected int idxDipendente { get => AppMServ.IdxDipendente; } #endregion Protected Properties #region Protected Methods protected override void OnInitialized() { isLoading = true; initToggler(); // recupero mesi da gestire var monthConf = DataService.ConfigGetKey("NumMesiCalAzienda"); if (monthConf != null) { int intVal = 0; int.TryParse(monthConf.valore, out intVal); numMesi = intVal > 0 ? intVal : numMesi; } oggi = DateTime.Today; dtMin = new DateTime(oggi.Year, 1, 1); dtMax = dtMin.AddYears(1); ReloadData(); } #endregion Protected Methods #region Private Fields private bool isLoading = false; #endregion Private Fields #region Private Properties private List ListFermateAzienda { get; set; } = new List(); private List ListMalattie { get; set; } = new List(); private List ListRichiesteDip { get; set; } = new List(); /// /// Elenco eventi formato originale (EventDTO) /// private List SchedEvList { get; set; } = new List(); private bool showMalattie { get; set; } = false; private SelectGlobalToggle ToggleData { get; set; } = new SelectGlobalToggle(); #endregion Private Properties #region Private Methods private async Task evToggled(SelectGlobalToggle newTogData) { ToggleData = newTogData; showMalattie = !ToggleData.isActive; await Task.Delay(1); } private void ForceReloadCal() { ReloadData(); } private void initToggler() { ToggleData = new SelectGlobalToggle() { leftString = "Malattie", rightString = "Ferie e Permessi", placardCss = "bg-light border-light text-dark", }; } private void ReloadData() { isLoading = true; if (idxDipendente > 0) { // recupero direttamente da oggetto DB SchedEvList = DataService.EventListPeriodo(idxDipendente, dtMin, dtMax); listRecordsRichieste = DataService.RegRichiesteGetByDip(idxDipendente, dtMin, dtMax); listCFF = DataService.CalFestFeriePeriodo(dtMin, dtMax); } PrepareDataset(); isLoading = false; } private List? listRecordsRichieste = null; private List? listCFF { get; set; } = null; /// /// Preparazione dataset da inviare all'obj /// private void PrepareDataset() { CurPar = new CalendarioAziendaleOld.ParamSet() { CalType = 1, EvDtoList = SchedEvList, ListRecordsRichieste = listRecordsRichieste, ListFermateAzienda = listCFF, firstDate = oggi, IdxDip = idxDipendente, minDate = dtMin, maxDate = dtMax, MonthDispl = numMesi, ModoDisplay = BlazorCalendar.DisplayedView.Monthly }; } private CalendarioAziendaleOld.ParamSet CurPar = new CalendarioAziendaleOld.ParamSet(); private async Task SetDate(DateTime newDate) { // se la data fosse esterna all'intervallo considerato...) if (newDate < dtMin || newDate > dtMax) { // verifico se "allargare" alla minima o alla massima if (newDate < dtMin) { dtMin = new DateTime(newDate.Year - 1, 1, 1); } else { dtMax = new DateTime(newDate.Year + 1, 1, 1); } await Task.Delay(10); ReloadData(); await Task.Delay(10); } } private async Task SetMonth(int newNum) { if (numMesi != newNum) { numMesi = newNum; } await Task.Delay(10); ReloadData(); await Task.Delay(10); } #endregion Private Methods } }