private async void CheckCredentials(object sender, RoutedEventArgs e) { if (UAC.GetInstance().UserId == -1) { //Frame.Navigate(typeof(Login)); //return; UAC.GetInstance().Authorize("admin", "p@ssw0rd"); } if (firstLoad) { ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings; if (!(localSettings.Values["picturesFolder"] is string)) { await new Windows.UI.Popups.MessageDialog("Please select folder where posters will be stored").ShowAsync(); FolderPicker folderPicker = new FolderPicker(); folderPicker.FileTypeFilter.Add("*"); StorageFolder folder = await folderPicker.PickSingleFolderAsync(); if (folder == null) { return; } string folderToken = StorageApplicationPermissions.FutureAccessList.Add(folder); localSettings.Values["picturesFolder"] = folderToken; } firstLoad = false; sortCB.SelectedIndex = SortOption.SortOptions.FindIndex(j => j.SortProperty == SortProperties.ViewDate); filterCB.SelectedIndex = FilterOption.FilterOptions.FindIndex(j => j.Filter == Filters.GetAll); } }
private async void SaveBtn_Click(object sender, RoutedEventArgs e) { if (InfoFlyout.IsOpen) { InfoFlyout.Hide(); } if (Movies.Any(x => x.HasErrors)) { InfoText.Text = "Пожалуйста, сначала исправьте ошибки в таблице"; InfoFlyout.ShowAt(dgv); return; } SaveBtn.IsEnabled = false; MoviesController controller = MoviesController.GetInstance(); int result = await controller.SaveMovies(Movies.Select(x => x.Movie).ToList()); int userId = UAC.GetInstance().UserId; int viewings = await controller.SaveViewings(Movies.Select( x => new ViewingData(x.Movie.ID, userId, DateTime.Parse(x.Date), x.Rate)).ToList()); InfoText.Text = string.Format("Сохранено {0}/{1} фильмов{2}Добавлено {3}/{1} просмотров", result, Movies.Count, Environment.NewLine, viewings); InfoFlyout.ShowAt(dgv); Movies = new List <MovieDisplay>(); dgv.ItemsSource = Movies; }
public bool ChangeUserPwd(string oldPwd, string newPwd) { using (var db = new Context()) { int uid = UAC.GetInstance().UserId; var user = db.Users .DefaultIfEmpty(null) .FirstOrDefault(x => x.ID == uid); if (!user.Pwd.Equals(oldPwd)) { return(false); } user.Pwd = newPwd; db.Users.Update(user); db.SaveChanges(); return(true); } }
private async void ActionButton_Tapped(object sender, TappedRoutedEventArgs e) { ActionButton.IsEnabled = false; DateTime date = DateTime.Now.Date; ContentDialog dialog = new ContentDialog() { Title = "Подтвердите действие", Content = string.Format("Добавить просмотр за {0} с оценкой {1}?", date.ToShortDateString(), Rate.Text), PrimaryButtonText = "Да", CloseButtonText = "Нет" }; var result = await dialog.ShowAsync(); if (result == ContentDialogResult.Primary) { ViewingData viewing = new ViewingData(id, UAC.GetInstance().UserId, date, float.Parse(Rate.Text)); int z = await MoviesController.GetInstance().SaveViewings(new List <ViewingData>() { viewing }); if (z > 0) { InfoText.Text = "Просмотр добавлен"; List <ViewingData> viewings = MoviesController.GetInstance().GetViewings(id, UAC.GetInstance().UserId); tViewings.Text = string.Join( ", ", viewings.Select(x => string.Format("{0} ({1:F1})", x.Date.ToShortDateString(), x.Rating))); } else { InfoText.Text = "Что-то пошло не так"; } InfoFlyout.ShowAt(Rate); Rate.Text = ""; } else { ActionButton.IsEnabled = true; } }
private async void Button_Click(object sender, RoutedEventArgs e) { Context.IsLocalDB = dbTypeCB.IsChecked ?? true; using (var db = new Context()) if (db.Users.Count() < 1) { db.Users.Add(new User() { ID = 1, Name = "admin", Pwd = "p@ssw0rd", Role = Roles.ROLE_ADMIN }); db.SaveChanges(); } if (UAC.GetInstance().Authorize(loginTB.Text, passTB.Password)) { Frame.Navigate(typeof(MainPage)); } else { await new Windows.UI.Popups.MessageDialog( "Неверные данные учётной записи", "Вход не выполнен").ShowAsync(); } }
public UserStatistics(Context context) { int uid = UAC.GetInstance().UserId; ViewingsCount = context.Viewings .Count(x => x.UserID == uid); MoviesCount = context.Viewings .Where(x => x.UserID == uid) .GroupBy(x => x.MovieID) .Select(x => x.First()) .Count(); TotalRuntime = TimeSpan.FromMinutes(context.Viewings .Where(z => z.UserID == uid) .Select(x => x.Movie) .Sum(y => y.Runtime)); GenrePercentage = context.Viewings .Where(z => z.UserID == uid && z.Movie.Genres.Count > 0) .Select(x => x.Movie.Genres.First()) .GroupBy(y => y.GenreId, y => y.Genre.Name) .Select(w => new Tuple <string, float>(w.First(), w.Count())) .OrderByDescending(x => x.Item2) .Take(3) .ToList(); }
public PagedResult <MovieData> GetMovies(object param, int page, int count, Filters filter, SortProperties sort) { using (var db = new Context()) { IQueryable <Movie> query = db.Movies; int uid = UAC.GetInstance().UserId; switch (sort) { case SortProperties.RatingUser: query = db.Viewings .Where(z => z.UserID == uid) .OrderByDescending(x => x.Rating) .Select(y => y.Movie); break; case SortProperties.ViewDate: query = db.Viewings .Where(z => z.UserID == uid) .OrderByDescending(x => x.Date) .Select(y => y.Movie); break; } switch (filter) { case Filters.GetByActor: if (param is PersonData) { query = query.Where(x => x.Actors.Exists(y => y.ActorId == (param as PersonData).ID)); } else { return(new PagedResult <MovieData>()); } break; case Filters.GetByCountry: if (param is CountryData) { query = query.Where(x => x.Countries.Exists(y => y.CountryId == (param as CountryData).ID)); } else { return(new PagedResult <MovieData>()); } break; case Filters.GetByDirector: if (param is PersonData) { query = query.Where(x => x.Directors.Exists(y => y.DirectorId == (param as PersonData).ID)); } else { return(new PagedResult <MovieData>()); } break; case Filters.GetByScreenwriter: if (param is PersonData) { query = query.Where(x => x.Screenwriters.Exists(y => y.ScreenwriterId == (param as PersonData).ID)); } else { return(new PagedResult <MovieData>()); } break; case Filters.GetByGenre: if (param is GenreData) { query = query.Where(x => x.Genres.Exists(y => y.GenreId == (param as GenreData).ID)); } else { return(new PagedResult <MovieData>()); } break; case Filters.GetByStoryline: if (param is string) { query = query.Where(x => x.Storyline.Contains(param as string, StringComparison.OrdinalIgnoreCase)); } else { return(new PagedResult <MovieData>()); } break; case Filters.GetByTitle: if (param is string) { query = query.Where(x => x.LocalizedTitle.Contains(param as string, StringComparison.OrdinalIgnoreCase) || x.OriginalTitle.Contains(param as string, StringComparison.OrdinalIgnoreCase)); } else { return(new PagedResult <MovieData>()); } break; case Filters.GetByYearPeriod: if (param is Tuple <short, short> ) { query = query.Where(x => x.Year >= (param as Tuple <short, short>).Item1 && x.Year <= (param as Tuple <short, short>).Item2); } else { return(new PagedResult <MovieData>()); } break; } switch (sort) { case SortProperties.OriginalTitle: query = query.OrderBy(x => x.OriginalTitle); break; case SortProperties.Year: query = query.OrderBy(x => x.Year); break; case SortProperties.RatingIMDB: query = query.OrderByDescending(x => x.RatingIMDB); break; } PagedResult <Movie> movies = query.GetPaged(page, count); return(new PagedResult <MovieData>() { CurrentPage = movies.CurrentPage, PageCount = movies.PageCount, PageSize = movies.PageSize, RowCount = movies.RowCount, Results = movies.Results.Select(x => new MovieData() { ID = x.ID, LocalizedTitle = x.LocalizedTitle, OriginalTitle = x.OriginalTitle, Year = x.Year, RatingIMDB = x.RatingIMDB }).ToList() }); } }
protected async override void OnNavigatedTo(NavigationEventArgs args) { if (!(args.Parameter is int)) { return; } id = (int)args.Parameter; MovieData movie = await MoviesController.GetInstance().GetMovie(id); bool isNew = movie == null; //Название, если есть только в одном варианте, выводится без слэша titleText.Text = string.IsNullOrWhiteSpace(movie.LocalizedTitle) || string.IsNullOrWhiteSpace(movie.OriginalTitle) ? movie.OriginalTitle + movie.LocalizedTitle : movie.OriginalTitle + " / " + movie.LocalizedTitle; //Все харакетеристики tYear.Text = movie.Year.ToString(); tCountry.Text = string.Join(", ", movie.Countries.Select(x => x.Name)); tDirector.Text = string.Join(", ", movie.Directors.Select(x => x.Name)); tScreenwriter.Text = string.Join(", ", movie.Screenwriters.Select(x => x.Name)); tTagline.Text = movie.TagLine; tGenre.Text = string.Join(", ", movie.Genres.Select(x => x.Name)); tRuntime.Text = TimeSpan.FromMinutes(movie.Runtime).ToString(@"h\:mm"); tActors.Text = string.Join(", ", movie.Actors.Select(x => x.Name)); tPlot.Text = movie.Storyline.Replace("<br>", Environment.NewLine); tRateKP.Text = movie.RatingKP.ToString("F3"); tRateIMDB.Text = movie.RatingIMDB.ToString("F1"); //Добавим данные о просмотрах, если они были if (!isNew) { List <ViewingData> viewings = MoviesController.GetInstance().GetViewings(movie.ID, UAC.GetInstance().UserId); if (viewings.Count > 0) { tViewings.Text = string.Join( ", ", viewings.Select(x => string.Format("{0} ({1:F1})", x.Date.ToShortDateString(), x.Rating))); } else { tViewings.Text = "нет"; tViewings.Foreground = new SolidColorBrush(Windows.UI.Colors.Gray); } } ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings; if (localSettings.Values["picturesFolder"] is string folderToken) { StorageFolder nfolder = await StorageApplicationPermissions.FutureAccessList.GetFolderAsync(folderToken); if (await nfolder.TryGetItemAsync(Path.GetFileName(movie.PosterLink)) is StorageFile image) { using (var stream = await image.OpenReadAsync()) { BitmapImage bitmapImage = new BitmapImage(); await bitmapImage.SetSourceAsync(stream); poster.Source = bitmapImage; } } else { poster.Source = new BitmapImage(new Uri(movie.PosterLink)); } } }