@using System.Globalization @using Template.Shared.Core.Dto @using Template.Shared.Components.Layout @using Template.Shared.Core.Entity @using Template.Shared.Core.Interface @using Template.Shared.Components.Layout.Overlay @using Template.Shared.Components.SingleElements.BottomSheet @inject IManageDataService ManageData @inject INetworkService NetworkService @inject IIntegryApiService IntegryApiService
Commessa @foreach (var com in Commesse) { @($"{com.CodJcom} - {com.Descrizione}") }
Inizio
Fine
Avviso
Assegnata a @foreach (var user in Users) { @user.FullName }
Tipo @foreach (var type in ActivityType) { @type.ActivityTypeId }
Esito @foreach (var result in ActivityResult) { @result.ActivityResultId }
@code { [CascadingParameter] private IMudDialogInstance MudDialog { get; set; } [Parameter] public string? Id { get; set; } private ActivityDTO OriginalModel { get; set; } = new(); private ActivityDTO ActivityModel { get; set; } = new(); private List ActivityResult { get; set; } = []; private List ActivityType { get; set; } = []; private List Users { get; set; } = []; private List Commesse { get; set; } = []; private List Clienti { get; set; } = []; private List Pros { get; set; } = []; private bool IsNew => Id.IsNullOrEmpty(); private bool IsView => !NetworkService.IsNetworkAvailable(); private string? LabelSave { get; set; } //Overlay for save private bool VisibleOverlay { get; set; } private bool SuccessAnimation { get; set; } private bool OpenEsito { get; set; } = false; protected override async Task OnInitializedAsync() { _ = LoadData(); LabelSave = IsNew ? "Aggiungi" : null; if (!Id.IsNullOrEmpty()) ActivityModel = (await ManageData.GetActivity(x => x.ActivityId.Equals(Id))).Last(); if (IsNew) { ActivityModel.EstimatedTime = DateTime.Today.Add(TimeSpan.FromHours(DateTime.Now.Hour)); ActivityModel.EstimatedEndtime = DateTime.Today.Add(TimeSpan.FromHours(DateTime.Now.Hour) + TimeSpan.FromHours(1)); ActivityModel.UserName = UserSession.User.Username; } OriginalModel = ActivityModel.Clone(); } private async Task Save() { if (!CheckPreSave()) return; VisibleOverlay = true; StateHasChanged(); var response = await IntegryApiService.SaveActivity(ActivityModel); if (response == null) return; var newActivity = response.Last(); await ManageData.InsertOrUpdate(newActivity); SuccessAnimation = true; StateHasChanged(); await Task.Delay(1250); MudDialog.Close(newActivity); } private bool CheckPreSave() { Snackbar.Clear(); Snackbar.Configuration.PositionClass = Defaults.Classes.Position.TopCenter; if (!ActivityModel.ActivityTypeId.IsNullOrEmpty()) return true; Snackbar.Add("Tipo attività obbligatorio!", Severity.Error); return false; } private async Task LoadData() { Users = await ManageData.GetTable(); ActivityResult = await ManageData.GetTable(); Clienti = await ManageData.GetTable(x => x.FlagStato.Equals("A")); Pros = await ManageData.GetTable(); ActivityType = await ManageData.GetTable(x => x.FlagTipologia.Equals("A")); if (IsNew) { await LoadCommesse(); } } private async Task LoadCommesse() => Commesse = await ManageData.GetTable(x => x.CodAnag != null && x.CodAnag.Equals(ActivityModel.CodAnag)); private async Task?> SearchCliente(string value, CancellationToken token) { if (string.IsNullOrEmpty(value)) return null; var listToReturn = new List(); listToReturn.AddRange( Clienti.Where(x => x.RagSoc.Contains(value, StringComparison.OrdinalIgnoreCase)).Select(x => x.RagSoc) ); listToReturn.AddRange( Pros.Where(x => x.RagSoc.Contains(value, StringComparison.OrdinalIgnoreCase)).Select(x => x.RagSoc) ); return listToReturn; } private async Task OnClienteChanged() { string? codAnag = null; var cliente = Clienti.LastOrDefault(x => ActivityModel.Cliente != null && x.RagSoc.Contains(ActivityModel.Cliente, StringComparison.OrdinalIgnoreCase)); if (cliente is null) { var pros = Pros.LastOrDefault(x => ActivityModel.Cliente != null && x.RagSoc.Contains(ActivityModel.Cliente, StringComparison.OrdinalIgnoreCase)); if (pros is not null) { codAnag = pros.CodAnag; } } else { codAnag = cliente.CodAnag; } if (codAnag is not null) { ActivityModel.CodAnag = codAnag; await LoadCommesse(); OnAfterChangeValue(); } } private async Task OnCommessaChanged() { ActivityModel.Commessa = (await ManageData.GetTable(x => x.CodJcom.Equals(ActivityModel.CodJcom))).Last().Descrizione; OnAfterChangeValue(); } private void OnAfterChangeValue() { if (!IsNew) { LabelSave = !OriginalModel.Equals(ActivityModel) ? "Aggiorna" : null; } } private void OpenSelectEsito() { if (!IsNew && (ActivityModel.UserName is null || !ActivityModel.UserName.Equals(UserSession.User.Username))) return; OpenEsito = !OpenEsito; StateHasChanged(); } }