public async Task <IActionResult> Create([Bind("RuGenreName")] Genre genre) { if (ModelState.IsValid) { if (!db.Genres.Any(gnr => gnr.RuGenreName == genre.RuGenreName)) { genre.OriginalGenreName = genre.RuGenreName; await db.Genres.AddAsync(genre); await db.SaveChangesAsync(); await mailService.SendUpdateNews(genre); return(RedirectToAction(nameof(Index))); } else { ModelState.AddModelError("Name", "Такой жанр уже существует"); } } return(View(genre)); }
public async Task <IActionResult> ExtAuth(string serviceName, string code, string state, string access_token, string user_id, string email) { User newUser; Image newUserAvatar = null; bool UserAccepted = false; string HostUri = Request.Scheme + "://" + Request.Host + this.Url.Action("ExtAuth", "Account"); switch (serviceName.ToLower()) { case "vk": { if (string.IsNullOrEmpty(access_token)) { return(View(model: "redirect_from_vk")); } UserAccepted = oauthManager.VkOauthHelper.GetOauthUser(Convert.ToInt32(user_id), null, access_token, out newUser, out newUserAvatar); break; } case "github": { UserAccepted = oauthManager.GithubOauthHelper.ResumeOauthWithCode(HostUri, code, state, out newUser, out newUserAvatar); break; } default: return(new StatusCodeResult(404)); } if (UserAccepted) { User isUserAlredyExist = await db.Users.FirstOrDefaultAsync(u => u.OauthServiceName == newUser.OauthServiceName && u.OauthSocialId == newUser.OauthSocialId); if (isUserAlredyExist != null) { if (isUserAlredyExist.IsBanned) { return(new StatusCodeResult(403)); } await Authenticate(isUserAlredyExist); return(RedirectToAction("Index", "Home")); } newUser.EmailAddress = newUser.OauthServiceName + newUser.OauthSocialId.ToString() + "@omdb.com"; await db.Users.AddAsync(newUser); await db.SaveChangesAsync(); if (newUserAvatar != null) { newUserAvatar.Save(appEnvironment.WebRootPath + "/static/images/UsersAvatars/" + newUser.Id.ToString() + ".jpg"); } await Authenticate(newUser); return(RedirectToAction("Index", "Home")); } else { throw new Exception($"Can't register via Oauth-service({serviceName})"); } }
public async Task <IActionResult> Create([Bind("RuTitle,RuDescription,ReleaseDate,Rating")] Movie movie, string Genres, IFormFile poster) { Movie sss = new Movie(); if (ModelState.IsValid) { List <string> sList = new List <string>(); List <Genre> gList = await db.Genres.ToListAsync(); foreach (Genre g in gList) { sList.Add(g.RuGenreName.ToLower()); } foreach (string s in Genres.Split(", ")) { if (!sList.Contains(s.Trim().ToLower())) { ModelState.ClearValidationState("Genres"); ModelState.AddModelError("Genres", "Не распознан 1 из жанров, исправьте(или создайте отсутствующий жанр) и повторите попытку"); return(View(movie)); } } movie.OriginalDescription = movie.RuDescription; movie.OriginalTitle = movie.RuTitle; await db.Movies.AddAsync(movie); await db.SaveChangesAsync(); List <Genre> AddedMovieGenres = new List <Genre>(); Genre genre; foreach (string s in Genres.Split(",")) { genre = await db.Genres.FirstOrDefaultAsync(el => el.RuGenreName.Trim().ToLower() == s.Trim().ToLower()); if (genre != null) { AddedMovieGenres.Add(genre); } } foreach (Genre el in AddedMovieGenres) { db.MoviesGenres.Add(new MovieGenres() { MovieId = movie.Id, GenreId = el.Id }); } if (poster != null) { string path = "/static/images/Posters/" + (movie.Id).ToString() + ".jpg"; using (var fileStream = new FileStream(appEnvironment.WebRootPath + path, FileMode.Create)) { await poster.CopyToAsync(fileStream); } } await db.SaveChangesAsync(); await mailService.SendUpdateNews(movie); return(RedirectToAction(nameof(Index))); } return(View(movie)); }