public ActivityAddAndUpdatePage(Activity activity = null)
        {
            foreach (var activityType in (Enums.ActivityTypes[])Enum.GetValues(typeof(Enums.ActivityTypes)))
            {
                activityTypesDictionary.Add(activityType, Enums.GetEnumDescription(activityType));
            }
            var mainGrid = new ExGrid()
            {
                VerticalOptions   = LayoutOptions.FillAndExpand,
                HorizontalOptions = LayoutOptions.CenterAndExpand,
                Padding           = new Thickness(20, 0, 20, 0)
            };
            //mainGrid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Auto) });
            //mainGrid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Auto) });
            //mainGrid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Auto) });
            //mainGrid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Auto) });
            TableSection tableSection = null;
            TableRoot    tableRoot    = null;

            if (activity == null)
            {
                tableSection = new TableSection("Aktivite Ekle");
                tableRoot    = new TableRoot("Aktivite Ekle");
            }
            else
            {
                tableSection = new TableSection("Aktivite Güncelle");
                tableRoot    = new TableRoot("Aktivite Güncelle");
            }
            var activityNameEntry = new ExEntry()
            {
                Placeholder = "Aktivite Adı",
            };
            var activityNameEntryViewCell = new ViewCell();

            if (activity != null)
            {
                var activityNameLabel = new ExLabel()
                {
                    Text      = "Aktivite Adı:",
                    TextColor = Color.Blue,
                    HorizontalTextAlignment = TextAlignment.Center
                };
                activityNameEntryViewCell.View = new ExStackLayout()
                {
                    Children =
                    {
                        activityNameLabel,
                        activityNameEntry
                    }
                };
            }
            else
            {
                activityNameEntryViewCell.View = activityNameEntry;
            }
            tableSection.Add(activityNameEntryViewCell);



            var activityTypesPicker = new ExPicker()
            {
                Title       = "Aktivite Türünü Seçiniz",
                TextColor   = Color.Black,
                ItemsSource = activityTypesDictionary.Values.ToList()
            };
            var activityTypesPickerViewCell = new ViewCell();

            if (activity != null)
            {
                var activityTypesPickerLabel = new ExLabel()
                {
                    Text      = "Aktivite Türü:",
                    TextColor = Color.Blue,
                    HorizontalTextAlignment = TextAlignment.Center
                };
                activityTypesPickerViewCell.View = new ExStackLayout()
                {
                    Children =
                    {
                        activityTypesPickerLabel,
                        activityTypesPicker
                    }
                };
            }
            else
            {
                activityTypesPickerViewCell.View = activityTypesPicker;
            }
            tableSection.Add(activityTypesPickerViewCell);


            var activityIsActivePicker = new ExPicker()
            {
                Title       = "Aktivite Aktiflik Durumu",
                TextColor   = Color.Black,
                ItemsSource = isActiveStatusDictionary.Values.ToList()
            };

            if (activity != null)
            {
                var activityIsActivePickerLabel = new ExLabel()
                {
                    Text      = "Aktivite Aktiflik Durumu:",
                    TextColor = Color.Blue,
                    HorizontalTextAlignment = TextAlignment.Center
                };

                isActiveStatusDictionary.Add(false, "Aktif Değil");
                isActiveStatusDictionary.Add(true, "Aktif");
                activityIsActivePicker.ItemsSource  = isActiveStatusDictionary.Values.ToList();
                activityIsActivePicker.SelectedItem = isActiveStatusDictionary
                                                      .FirstOrDefault(p => p.Key == activity.IsActive).Value;
                var activityIsActivePickerViewCell = new ViewCell
                {
                    View = new ExStackLayout()
                    {
                        Children =
                        {
                            activityIsActivePickerLabel,
                            activityIsActivePicker
                        }
                    }
                };
                tableSection.Add(activityIsActivePickerViewCell);
                activityNameEntry.Text           = activity.ActivityName;
                activityTypesPicker.SelectedItem = Enums.GetEnumDescription(activity.ActivityTypes);
            }
            var saveButton = new Exbutton()
            {
                Text              = "Kaydet",
                BackgroundColor   = Color.FromHex("#449D44"),
                TextColor         = Color.White,
                CornerRadius      = 10,
                HorizontalOptions = LayoutOptions.FillAndExpand
            };
            var saveButtonViewCell = new ViewCell
            {
                View = saveButton
            };

            tableSection.Add(saveButtonViewCell);

            tableRoot.Add(tableSection);
            var tableView = new TableView(tableRoot)
            {
                Intent        = TableIntent.Form,
                HasUnevenRows = true,
                RowHeight     = -1,
                HeightRequest = -2
            };

            mainGrid.Children.Add(tableView);

            saveButton.Clicked += async(sender, e) =>
            {
                if (activityNameEntry.Text.Length != 0)
                {
                    if (activity == null)
                    {
                        if (!_manager.IsThereActivity(activityNameEntry.Text, null))
                        {
                            var newActivity = new Activity()
                            {
                                ActivityName         = activityNameEntry.Text,
                                ActivityRegisterDate = DateTime.Today,
                                IsActive             = true
                            };
                            newActivity.ActivityTypes =
                                activityTypesDictionary.FirstOrDefault(p =>
                                                                       p.Value == activityTypesPicker.SelectedItem.ToString()).Key;
                            if (_manager.InsertActivity(newActivity) > 0)
                            {
                                App.activityList = _manager.GetAllActivity();
                                await DisplayAlert("Başarı", "Aktivite ekleme işlemi başarılı bir şekilde sonuçlandı.",
                                                   "Tamam");

                                await Navigation.PopAsync(true);
                            }
                            else
                            {
                                await DisplayAlert("Hata", "Ekleme işlemi sırasında hata oluştu.", "Tamam");
                            }
                        }
                        else
                        {
                            await DisplayAlert("Hata", "Girilen aktivite adı zaten başka bir aktivite için kullanılıyor.", "Tamam");
                        }
                    }
                    else
                    {
                        if (!_manager.IsThereActivity(activityNameEntry.Text, activity.ActivityId))
                        {
                            var regulatedActivity = new Activity()
                            {
                                ActivityTypes = activityTypesDictionary.FirstOrDefault(p =>
                                                                                       p.Value == activityTypesPicker.SelectedItem.ToString()).Key,
                                ActivityName         = activityNameEntry.Text,
                                ActivityId           = activity.ActivityId,
                                ActivityRegisterDate = activity.ActivityRegisterDate,
                                IsActive             = isActiveStatusDictionary.FirstOrDefault(p => p.Value == activityIsActivePicker.SelectedItem.ToString()).Key
                            };

                            if (regulatedActivity.ActivityTypes == activity.ActivityTypes &&
                                regulatedActivity.IsActive == activity.IsActive &&
                                regulatedActivity.ActivityName.Equals(activity.ActivityName))
                            {
                                App.activityList = _manager.GetAllActivity();
                                await DisplayAlert("Başarı", "Aktivite güncelleme işlemi tamamlandı.", "Tamam");

                                await Navigation.PopAsync(true);
                            }
                            else
                            {
                                if (regulatedActivity.ActivityTypes != activity.ActivityTypes)
                                {
                                    var returned = await DisplayAlert("Dikkat",
                                                                      "Aktivitenin türünü değiştirdiniz. Devam ederseniz bu aktivitenin geçmişe yönelik tüm" +
                                                                      "verileri sıfırlanacaktır. Devam etmek istiyor musunuz?", "Devam", "İptal");

                                    if (returned == true)
                                    {
                                        var listActivityStatuses =
                                            _manager.GetAllActivityStatusesById(activity.ActivityId);
                                        foreach (var activityState in listActivityStatuses)
                                        {
                                            _manager.UpdateActivityStatus(activityState.ActivityStatusId, 0);
                                        }

                                        if (_manager.UpdateActivity(regulatedActivity) > 0)
                                        {
                                            App.activityList = _manager.GetAllActivity();
                                            await DisplayAlert("Başarı", "Aktivite güncelleme işlemi tamamlandı.", "Tamam");

                                            await Navigation.PopAsync(true);
                                        }
                                        else
                                        {
                                            await DisplayAlert("Hata", "Güncelleme işlemi sırasında hata oluştu.", "Tamam");
                                        }
                                    }
                                    else
                                    {
                                        await DisplayAlert("Uyarı",
                                                           "Aktivite güncelleme işlemi kendi isteğiniz ile iptal edildi.", "Tamam");
                                    }
                                }
                                else
                                {
                                    if (_manager.UpdateActivity(regulatedActivity) > 0)
                                    {
                                        App.activityList = _manager.GetAllActivity();
                                        await DisplayAlert("Başarı", "Aktivite güncelleme işlemi tamamlandı.", "Tamam");

                                        await Navigation.PopAsync(true);
                                    }
                                    else
                                    {
                                        await DisplayAlert("Hata", "Güncelleme işlemi sırasında hata oluştu.", "Tamam");
                                    }
                                }
                            }
                        }
                        else
                        {
                            await DisplayAlert("Hata", "Girilen aktivite adı zaten başka bir aktivite için kullanılıyor.", "Tamam");
                        }
                    }
                }
                else
                {
                    await DisplayAlert("Hata", "Aktivite Adı girilmesi zorunludur.", "Tamam");
                }
            };



            Content = mainGrid;
        }
        public async Task CreateDisplay(DateTime?date)
        {
            try
            {
                this.IsBusy = true;
                if (date > DateTime.Today)
                {
                    await DisplayAlert("Hata", "Bugünün tarihinden ileri bir tarih giremezsiniz.", "Tamam");

                    date = DateTime.Today;
                }
                var queryDate = new DateTime(date.Value.Year, date.Value.Month, date.Value.Day);
                mainExStackLayout.IsVisible = false;
                mainExStackLayout.Children.Clear();
                this.datePicker.Date            = queryDate;
                this.datePicker.Format          = "dd/MM/yyyy";
                this.datePicker.VerticalOptions = LayoutOptions.Center;
                this.datePicker.MaximumDate     = DateTime.Today;

                //var datePicker = new ExDatePicker()
                //{
                //    Date = queryDate,
                //    Format = "dd/MM/yyyy",
                //    VerticalOptions = LayoutOptions.Center,
                //    MaximumDate = DateTime.Today
                //};
                var dateLabel = new ExLabel()
                {
                    Text      = "Günü Seçiniz:",
                    TextColor = Color.Blue,
                    Margin    = new Thickness(10, 0, 0, 0),
                    // HorizontalTextAlignment = TextAlignment.Center,
                    VerticalTextAlignment = TextAlignment.Center
                };
                mainExStackLayout.Children.Add(dateLabel);
                mainExStackLayout.Children.Add(datePicker);

                mainExStackLayout.Children.Add(datePicker);
                var allActivities = _manager.GetAllActivity(date, true);
                foreach (var activity in allActivities)
                {
                    if (!_manager.IsThereActivityStatus(activity.ActivityId, queryDate))
                    {
                        _manager.InsertActivityStatus(activity.ActivityId, queryDate);
                    }
                }

                var allActivitiesNoFilter = _manager.GetAllActivity();
                var allActivityStatus     = _manager.GetAllActivityStatuses(queryDate);
                var activityStatusList    = allActivityStatus.Select(p => new ActivityStatusViewModel()
                {
                    ActivityName = allActivitiesNoFilter.FirstOrDefault(a => a.ActivityId == p.ActivityId) != null ?
                                   allActivitiesNoFilter.FirstOrDefault(a => a.ActivityId == p.ActivityId).ActivityName
                        : "",
                    ActivityValue    = p.ActivityValue,
                    ActivityStatusId = p.ActivityStatusId,
                    ActivityTypes    = allActivitiesNoFilter.FirstOrDefault(a => a.ActivityId == p.ActivityId) != null ?
                                       allActivitiesNoFilter.FirstOrDefault(a => a.ActivityId == p.ActivityId).ActivityTypes :
                                       Enums.ActivityTypes.YapildiYapilmadi
                }).ToList();
                exPickers = new ExPicker[activityStatusList.Count(p => p.ActivityTypes == Enums.ActivityTypes.YapildiYapilmadi)];
                exEntries = new ExNumericEntry[activityStatusList.Count(p => p.ActivityTypes != Enums.ActivityTypes.YapildiYapilmadi)];
                var exPickersCounter    = 0;
                var exEntryCellsCounter = 0;
                var lst = new List <ViewCell>();
                if (activityStatusList.Count > 0)
                {
                    var tabIndex = 0;
                    foreach (var activity in activityStatusList)
                    {
                        if (activity.ActivityTypes == Enums.ActivityTypes.Sayi)
                        {
                            exEntries[exEntryCellsCounter] = new ExNumericEntry()
                            {
                                Keyboard                = Keyboard.Text,
                                Placeholder             = activity.ActivityValue.ToString(),
                                ReturnCommandParameter  = activity.ActivityStatusId,
                                TabIndex                = tabIndex,
                                HorizontalTextAlignment = TextAlignment.Center,
                            };
                            mainExStackLayout.Children.Add(new ExLabel()
                            {
                                Text      = activity.ActivityName,
                                TextColor = Color.Blue,
                                Margin    = new Thickness(10, 0, 0, 0),
                                //  HorizontalTextAlignment = TextAlignment.Center,
                                VerticalTextAlignment = TextAlignment.Center,
                            });
                            mainExStackLayout.Children.Add(exEntries[exEntryCellsCounter]);
                            exEntryCellsCounter++;
                        }
                        else
                        {
                            exPickers[exPickersCounter] = new ExPicker()
                            {
                                ItemsSource  = exPickersValue.Values.ToList(),
                                SelectedItem = exPickersValue.FirstOrDefault(p => p.Key == int.Parse(activity.ActivityValue.ToString())).Value,
                                Title        = "Durum Seçiniz",
                                ClassId      = activity.ActivityStatusId.ToString(),
                                TabIndex     = tabIndex
                            };
                            mainExStackLayout.Children.Add(new ExLabel()
                            {
                                Text      = activity.ActivityName,
                                TextColor = Color.Blue,
                                Margin    = new Thickness(10, 0, 0, 0),
                                // HorizontalTextAlignment = TextAlignment.Center,
                                VerticalTextAlignment = TextAlignment.Center
                            });
                            mainExStackLayout.Children.Add(exPickers[exPickersCounter]);
                            exPickersCounter++;
                        }

                        tabIndex++;
                    }
                }
                var saveButton = new Exbutton()
                {
                    Text            = "Kaydet",
                    BackgroundColor = Color.FromHex("#449D44"),
                    TextColor       = Color.White,
                    CornerRadius    = 10,
                    VerticalOptions = LayoutOptions.Center
                };
                saveButton.Clicked += async(sender, e) =>
                {
                    foreach (var exEntry in exEntries)
                    {
                        if (exEntry.Text != null)
                        {
                            double value;
                            if (double.TryParse(exEntry.Text, NumberStyles.Float,
                                                CultureInfo.InvariantCulture, out value))
                            {
                                _manager.UpdateActivityStatus(int.Parse(exEntry.ReturnCommandParameter.ToString()), value);
                            }
                        }
                        //  DisplayAlert("Deneme", $"{Convert.ToDouble(exEntry.Text)} {exEntry.ReturnCommandParameter}", "a");
                    }

                    foreach (var exPicker in exPickers)
                    {
                        _manager.UpdateActivityStatus(int.Parse(exPicker.ClassId.ToString()),
                                                      exPickersValue.FirstOrDefault(p => p.Value == exPicker.SelectedItem).Key);
                        //DisplayAlert("Deneme", $"{exPicker.SelectedItem} {exPicker.ClassId}", "a");
                    }

                    await DisplayAlert("Başarı", "Kayıt işlemi başarı ile tamamlandı.", "Tamam");
                };
                mainExStackLayout.Children.Add(saveButton);
                await Task.Delay(1000);

                mainExStackLayout.IsVisible = true;
                await Task.Delay(1380);

                this.IsBusy = false;
            }
            catch (Exception e)
            {
                DisplayAlert("Hata", e.Message, "Tamam");
            }
        }