@using CORE.Data.DbModels @using UI.Data @inject IJSRuntime JSRuntime @inject GpwDataService GDataServ @inject MessageService AppMServ @if (CalcOreProj == null) { } else {
@CalcOreProj.Gruppo
@CalcOreProj.RagSociale
@CalcOreProj.NomeProj
Budget: @CalcOreProj.budgetTime.ToString("N2")
consumate: @CalcOreProj.percUsed.ToString("P1")
Caricate: @CalcOreProj.totOre.ToString("N2")
rimanenti: @CalcOreProj.timeRem.ToString("N0")
@if (@CalcOreProj.timeRem < 0) {
Attenzione!: impossibile caricare altre ore nel progetto, verificare sia attivo o le ore a budget con amministrazione prima di procedere!
}
@if (currFase != null) {
@ancestFase.NomeFase
@currFase.NomeFase
}
Min
@if (CalcOreProj != null && CalcOreProj.timeRem > 0) { }
} @code { private int _idxFase = 0; private int idxProj = 0; private int minDur = 30; private bool doClose = true; private string descrizione = ""; private string cssCheckOre = ""; private CalcOreProgettiModel? CalcOreProj { get; set; } = null; private AnagFasiModel? currFase { get; set; } = null; private AnagFasiModel? ancestFase { get; set; } = null; [Parameter] public int idxFase { get { return _idxFase; } set { _idxFase = value; var pUpd = Task.Run(async () => await ReloadData()); pUpd.Wait(); } } [Parameter] public EventCallback RecStarted { get; set; } private async Task StartRecord() { // calcolo dataora chiusura... DateTime newInizio = CORE.Data.Utils.DateRounded(DateTime.Now, 5, true); // chiudo attività precedente (se c'è) odierna if (doClose) { var lastRA = await GDataServ.RegAttLastByDip(AppMServ.IdxDipendente); if (lastRA != null && lastRA.Inizio.Date == DateTime.Today) { lastRA.Fine = newInizio; await GDataServ.RegAttUpdate(lastRA); } } // registro nuova attività RegAttivitaModel newItem = new RegAttivitaModel() { IdxDipendente = AppMServ.IdxDipendente, Inizio = newInizio, Fine = newInizio.AddMinutes(minDur), IdxFase = idxFase, Descrizione = descrizione }; await GDataServ.RegAttUpdate(newItem); // segnalo fatto await RecStarted.InvokeAsync(false); } private async Task ClosePage() { await RecStarted.InvokeAsync(false); } protected async Task ReloadData() { // recupero dati fase completi... currFase = await GDataServ.AnagFasiSearch(idxFase); ancestFase = await GDataServ.AnagFasiSearch(currFase.IdxFaseAncest); if (currFase != null) { if (currFase.IdxProgetto != null) { int idxProj = (int)currFase.IdxProgetto; CalcOreProj = await GDataServ.CalcOreProj(idxProj); cssCheckOre = "text-success"; if (CalcOreProj.percUsed > 1) { cssCheckOre = "text-danger"; } else if (CalcOreProj.percUsed * 100 > 80) { cssCheckOre = "text-warning"; } } } } }