private void AddClosingEventHandler(object sender, DialogClosingEventArgs args)
        {
            bool result = false;

            if (Equals(args.Parameter, false))
            {
                return;
            }

            if (args.Parameter is TextBox)
            {
                args.Cancel();
                args.Session.UpdateContent(new PleaseWaitView());
                TextBox txtName = (TextBox)args.Parameter;
                string  name    = txtName.Text.Trim();
                if (string.IsNullOrEmpty(name) || string.IsNullOrWhiteSpace(name))
                {
                    args.Cancel();
                    args.Session.UpdateContent(new OkMessageDialog()
                    {
                        DataContext = "Null entry"
                    });
                    return;
                }

                var duplicate = _context.PartyLists.FirstOrDefault(c => c.Name == name);
                if (duplicate != null)
                {
                    args.Session.UpdateContent(new OkMessageDialog()
                    {
                        DataContext = "Duplicate name"
                    });
                    return;
                }
                Task.Run(() =>
                {
                    var newPartyList = new PartyList()
                    {
                        Name = name
                    };
                    try
                    {
                        //_context.Entry(newPartyList).State = EntityState.Added;
                        _context.PartyLists.Add(newPartyList);

                        var cplist = _context.CouncilPositions;
                        var cmlist = new List <CouncilMembers>();
                        foreach (var cp in cplist)
                        {
                            var cm = new CouncilMembers
                            {
                                CouncilPosition = cp,
                                PartyList       = newPartyList
                            };
                            cmlist.Add(cm);
                        }
                        foreach (var entity in cmlist)
                        {
                            //_context.Entry(entity).State = EntityState.Added;
                            _context.CouncilMembers.Add(entity);
                        }
                        _context.SaveChanges();
                        result = true;
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.Message);

                        result = false;
                    }
                    Thread.Sleep(500);
                    return(newPartyList);
                }).ContinueWith(
                    (t, _) =>
                {
                    if (result)
                    {
                        PartyLists.Add(t.Result);
                        RaisePropertyChanged(() => PartyLists);
                        args.Session.Close(false);
                    }
                    else
                    {
                        args.Session.UpdateContent(new OkMessageDialog()
                        {
                            DataContext = "Failed to add"
                        });
                    }
                }, null, TaskScheduler.FromCurrentSynchronizationContext());
            }
        }
        private void DeleteClosingEventHandler(object sender, DialogClosingEventArgs args)
        {
            bool result = false;

            if (Equals(args.Parameter, false))
            {
                return;
            }
            if (Equals(args.Parameter, "Cancel"))
            {
                return;
            }

            if (_isOkMessageOpen)
            {
                _isOkMessageOpen = false;
                return;
            }

            if (Equals(args.Parameter, "Ok"))
            {
                args.Cancel();
                args.Session.UpdateContent(new PleaseWaitView());
                Task.Run(() =>
                {
                    try
                    {
                        //_context.Entry(SelectedPartyList).State = EntityState.Deleted;
                        _context.PartyLists.Remove(SelectedPartyList);
                        foreach (var entity in CouncilMembersList)
                        {
                            //_context.Entry(entity).State = EntityState.Deleted;
                            _context.CouncilMembers.Remove(entity);
                        }

                        _context.SaveChanges();
                        result = true;
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.Message);

                        result = false;
                    }
                    Thread.Sleep(1000);
                    return(result);
                }).ContinueWith(
                    (t, _) =>
                {
                    if (!t.Result)
                    {
                        _isOkMessageOpen = true;
                        args.Session.UpdateContent(new OkMessageDialog()
                        {
                            DataContext = "Failed to Delete"
                        });
                    }
                    else
                    {
                        foreach (var member in CouncilMembersList.ToList())
                        {
                            CouncilMembersList.Remove(member);
                        }

                        PartyLists.Remove(SelectedPartyList);
                        RaisePropertyChanged(() => PartyLists);
                        //PartyLists = new List<PartyList>();
                        args.Session.Close(false);
                    }
                }, null, TaskScheduler.FromCurrentSynchronizationContext());
            }
        }