public TalukDetailsViewModel(ITalukService talukService, IFilePickerService filePickerService, ICommonServices commonServices, TalukListViewModel talukListViewModel, TalukViewModel talukViewModel) : base(commonServices)
 {
     TalukService       = talukService;
     FilePickerService  = filePickerService;
     TalukListViewModel = talukListViewModel;
     TalukViewModel     = talukViewModel;
 }
        protected override async Task <bool> DeleteItemAsync(TalukModel model)
        {
            try
            {
                StartStatusMessage("Deleting Taluk...");
                TalukViewModel.ShowProgressRing();
                var result = await TalukService.DeleteTalukAsync(model);

                if (!result.IsOk)
                {
                    await DialogService.ShowAsync(result.Message, "");

                    EndStatusMessage("Taluk is deleted");
                    return(true);
                }
                ClearItem();
                await TalukListViewModel.RefreshAsync();

                ShowPopup("success", "Taluk is deleted");
                EndStatusMessage("Taluk deleted");
                LogWarning("Taluk", "Delete", "Taluk deleted", $"Taluk {model.TalukId} '{model.TalukName}' was deleted.");
                return(true);
            }
            catch (Exception ex)
            {
                ShowPopup("error", "Taluk is not deleted");
                StatusError($"Error deleting Taluk: {ex.Message}");
                LogException("Taluk", "Delete", ex);
                return(false);
            }
            finally {
                TalukViewModel.HideProgressRing();
            }
        }
        //public ExpenseHeadDetailsArgs CreateArgs()
        //{
        //    return new ExpenseHeadDetailsArgs
        //    {
        //        ExpenseHeadId = Item?.ExpenseHeadId ?? 0
        //    };
        //}



        protected override async Task <bool> SaveItemAsync(TalukModel model)
        {
            try
            {
                if (IsProcessing)
                {
                    return(false);
                }
                IsProcessing = true;
                StartStatusMessage("Saving Taluk...");
                TalukViewModel.ShowProgressRing();
                if (model.TalukId <= 0)
                {
                    await TalukService.AddTalukAsync(model);
                }
                else
                {
                    await TalukService.UpdateTalukAsync(model);
                }
                ClearItem();
                IsProcessing = false;
                ShowPopup("success", "Taluk is Saved");
                EndStatusMessage("Taluk saved");
                LogInformation("Taluk", "Save", "Taluk saved successfully", $"Taluk {model.TalukName} '{model.TalukName}' was saved successfully.");
                await TalukListViewModel.RefreshAsync();

                return(true);
            }
            catch (Exception ex)
            {
                IsProcessing = false;
                ShowPopup("error", "Taluk is not Saved");
                StatusError($"Error saving Taluk: {ex.Message}");
                LogException("Taluk", "Save", ex);
                return(false);
            }
            finally {
                TalukViewModel.HideProgressRing();
            }
        }
        private async void OnListMessage(TalukListViewModel sender, string message, object args)
        {
            var current = Item;

            if (current != null)
            {
                switch (message)
                {
                case "ItemsDeleted":
                    if (args is IList <TalukModel> deletedModels)
                    {
                        if (deletedModels.Any(r => r.TalukId == current.TalukId))
                        {
                            await OnItemDeletedExternally();
                        }
                    }
                    break;

                case "ItemRangesDeleted":
                    try
                    {
                        var model = await TalukService.GetTalukAsync(current.TalukId);

                        if (model == null)
                        {
                            await OnItemDeletedExternally();
                        }
                    }
                    catch (Exception ex)
                    {
                        LogException("Taluk", "Handle Ranges Deleted", ex);
                    }
                    break;
                }
            }
        }