@using CORE.Data.DbModels @using UI.Data @inject IJSRuntime JSRuntime @inject GpwDataService GDataServ @inject MessageService AppMServ @if (CalcOreFasi == null) { } else {
@currProj.Gruppo
@currProj.ClienteNav.RagSociale
@currProj.NomeProj
Budget: @CalcOreFasi.budgetTime.ToString("N2")
consumate: @CalcOreFasi.percUsed.ToString("P1")
Caricate: @CalcOreFasi.totOre.ToString("N2")
rimanenti: @CalcOreFasi.timeRem.ToString("N0")
@if (!(bool)CalcOreFasi.Attivo || VetoProj) { if (VetoInsert) {
Attenzione!: impossibile caricare altre ore nel progetto, verificare l'attivazione e le ore a budget con amministrazione prima di procedere!
} else {
Attenzione!: progetto inattivo: verificare con amministrazione prima di procedere!
} }
@if (currFase != null) {
@ancestFase.NomeFase
@currFase.NomeFase
}
Min
@if (AppMServ.PayloadOk) { if (CalcOreFasi != null) { if (buttonEnabled) { } } }
} @code { private int _idxFase = 0; private int idxProj = 0; private int minDur = 30; private bool doClose = true; private string descrizione = ""; private string cssCheckOre = ""; private CalcOreFasiModel? CalcOreFasi { get; set; } = null; private AnagFasiModel? currFase { get; set; } = null; private AnagFasiModel? ancestFase { get; set; } = null; private AnagProgettiModel? currProj { 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 bool buttonEnabled { get { bool answ = !VetoProj; if (CalcOreFasi != null) { if (!(bool)CalcOreFasi.Attivo) { if (VetoInsert) { answ = false; } else { answ = true; } } } return answ; } } private bool VetoInsert { get => GDataServ.VetoInsert; } private bool VetoProj { get { bool answ = false; if (currProj != null) { var projAttivo = true; _ = bool.TryParse($"{currProj.Attivo}", out projAttivo); answ = !projAttivo; } return answ; } } 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, false); 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); currProj = await GDataServ.AnagProjSearch((int)currFase.IdxProgetto); if (currFase != null) { int idxFaseTgt = currFase.IdxFaseAncest == 0 ? currFase.IdxFase : currFase.IdxFaseAncest; CalcOreFasi = await GDataServ.CalcOreFase(idxFaseTgt); cssCheckOre = "text-success"; if (CalcOreFasi.percUsed > 1) { cssCheckOre = "text-danger"; } else if (CalcOreFasi.percUsed * 100 > 80) { cssCheckOre = "text-warning"; } //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"; // } //} } } }