/// <summary>
        /// Delete all local buffer data from database
        /// and query again
        /// </summary>
        /// <returns></returns>
        private async Task DeleteAll()
        {
            CurrentDialogType = DatabaseViewDialogType.WaitingDialog;
            await FaiCollectionHelper.DeleteByDateTimeAsync(DatabaseBuffer.FaiCollectionBuffers,
                                                            NameConstants.SqlConnectionString);

            await QueryByIntervalAsync();

            ShouldDisplayDialog = false;
        }
        private async Task QueryByIntervalAsync()
        {
            var dateStart = DateTimeViewModelStart.ToDateTime();
            var dateEnd   = DateTimeViewModelEnd.ToDateTime();

            if (!dateStart.HasValue || !dateEnd.HasValue)
            {
                PromptUser("Invalid date");
                return;
            }

            if (dateEnd.Value <= dateStart.Value)
            {
                PromptUser("Datetime end should greater than datetime start.");
                return;
            }

            if ((dateEnd.Value - dateStart.Value).TotalDays > 31)
            {
                PromptUser("Can not query more than 31 days");
                return;
            }

            if (ProductType == ProductType.Mtm)
            {
                var output = await FaiCollectionHelper.SelectByIntervalAsync <FaiCollectionMtm>(ProductType,
                                                                                                NameConstants.SqlConnectionString, dateStart.Value, dateEnd.Value);

                DatabaseBuffer.FaiCollectionBuffers = new List <IFaiCollection>(output);
            }
            else
            {
                var output = await FaiCollectionHelper.SelectByIntervalAsync <FaiCollectionAlps>(ProductType,
                                                                                                 NameConstants.SqlConnectionString, dateStart.Value, dateEnd.Value);

                DatabaseBuffer.FaiCollectionBuffers = new List <IFaiCollection>(output);
            }

            DatabaseBuffer.NavigateToPage(0);
            // Activate related controls
            CommandManager.InvalidateRequerySuggested();
        }
        private async Task DeleteSelection()
        {
            CurrentDialogType = DatabaseViewDialogType.WaitingDialog;

            // Delete in database
            await FaiCollectionHelper.DeleteByDateTimeAsync(SelectedCollections, NameConstants.SqlConnectionString);

            // Get last index in buffer before selections
            var indexOfFirstSelectedCollections = DatabaseBuffer.FaiCollectionBuffers.IndexOf(SelectedCollections[0]);
            var lastIndexBeforeSelections       =
                indexOfFirstSelectedCollections == 0 ? 0 : indexOfFirstSelectedCollections - 1;
            // Calculate the page index of lastIndexBeforeSelection
            var pageIndex = (int)Math.Floor(lastIndexBeforeSelections / (double)DatabaseBuffer.RowsPerPage);

            // Remove selections from buffer
            DatabaseBuffer.Remove(SelectedCollections);
            // Navigate to page where the first selection is deleted
            DatabaseBuffer.NavigateToPage(pageIndex);

            ShouldDisplayDialog = false;
        }
 public void DeleteOutdatedCollections()
 {
     FaiCollectionHelper.DeleteOutdated(NameConstants.SqlConnectionString);
 }