Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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})");
            }
        }
Exemplo n.º 3
0
        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));
        }