Пример #1
0
        public async Task <IActionResult> AddMusic(AddMusicModel model, int userId)
        {
            var  dtNow = DateTime.Now;
            User user  = await db.Users.FindAsync(userId);

            string dateTimeNow      = $"{dtNow.Day}.{dtNow.Month}.{dtNow.Year} {dtNow.Hour}:{dtNow.Minute}:{dtNow.Second}";
            string musicFileName    = $"{user.Login}_{dateTimeNow}_" + model.MusicFile.FileName;
            string sharingLinkMusic = "";
            string sharingLinkImage = "";

            try
            {
                if (await cloudService.IfFileExists("", musicFileName))
                {
                    return(new OkObjectResult(new { msg = $"В вашем хранилище уже есть файл {model.MusicFile.FileName}" }));
                }
                if (model.MusicImageFile != null)
                {
                    if (await cloudService.IfFileExists("", $"{user.Login}_music_{dateTimeNow}_" + model.MusicImageFile.FileName))
                    {
                        return(new OkObjectResult(new { msg = $"В вашем хранилище уже есть файл {model.MusicImageFile.FileName}" }));
                    }
                    sharingLinkImage = await cloudService.AddFile("", $"{user.Login}_music_{dateTimeNow}_" + model.MusicImageFile.FileName, model.MusicImageFile.OpenReadStream());
                }
                sharingLinkMusic = await cloudService.AddFile("", musicFileName, model.MusicFile.OpenReadStream());

                var music = new Music
                {
                    MusicName         = model.MusicName,
                    MusicFileName     = musicFileName,
                    MusicUrl          = sharingLinkMusic,
                    MusicImageName    = model.MusicImageFile == null ? $"{options.Value.DefaultMusicImageFile}" : $"{user.Login}_music_{dateTimeNow}_" + model.MusicImageFile.FileName,
                    MusicImageUrl     = model.MusicImageFile == null ? $"{options.Value.DefaultMusicImageFileLink}" : sharingLinkImage,
                    UserId            = user.UserId,
                    DateOfPublication = dtNow,
                    MusicGenreId      = model.MusicGenreId
                };
                db.Musics.Add(music);
                await db.SaveChangesAsync();

                var notificationResult = notificationManager.AddNotification(new AddNotification {
                    UserId  = userId, SourceId = music.MusicId, NotificationType = NotificationType.AddedMusic,
                    Message = $"Пользователь {user.Login} добавил новую песню под названием {music.MusicName}"
                }).Result;
                if (!notificationResult.OperationCompleted)
                {
                    throw new Exception(notificationResult.ErrorMessage);
                }
                return(new OkObjectResult(new { id = music.MusicId }));
            }
            catch
            {
                return(new StatusCodeResult(500));
            }
        }
Пример #2
0
        public async Task <IActionResult> AddPlaylist(AddPlaylistModel model, int userId)
        {
            var dateTimeNow      = DateTime.Now;
            var createDate       = $"{dateTimeNow.Day}.{dateTimeNow.Month}.{dateTimeNow.Year} {dateTimeNow.Hour}:{dateTimeNow.Minute}:{dateTimeNow.Second}";
            var sharingLinkImage = "";

            try
            {
                var user = await db.Users.FindAsync(userId);

                if (user == null)
                {
                    return(new NotFoundObjectResult(new { msg = "Пользователь не найден" }));
                }
                if (model.PlaylistImage != null)
                {
                    if (await cloudService.IfFileExists("", $"{user.Login}_playlist_{createDate}_" + model.PlaylistImage.FileName))
                    {
                        return(new OkObjectResult(new { msg = $"В вашем хранилище уже есть файл {model.PlaylistImage.FileName}" }));
                    }
                    sharingLinkImage = await cloudService.AddFile("", $"{user.Login}_playlist_{createDate}_" + model.PlaylistImage.FileName, model.PlaylistImage.OpenReadStream());
                }
                var playlist = new Playlist
                {
                    PlaylistName        = model.PlaylistName,
                    PlaylistDescription = model.PlaylistDescription,
                    PlaylistImageFile   = model.PlaylistImage == null ? $"{options.Value.DefaultPlaylistImageFile}" : $"{user.Login}_playlist_{createDate}_" + model.PlaylistImage.FileName,
                    PlaylistImageUrl    = model.PlaylistImage == null ? $"{options.Value.DefaultPlaylistImageLink}" : sharingLinkImage,
                    UserId     = user.UserId,
                    CreateDate = dateTimeNow
                };
                db.Playlists.Add(playlist);
                await db.SaveChangesAsync();

                var notificationResult = notificationManager.AddNotification(new AddNotification
                {
                    UserId           = userId,
                    SourceId         = playlist.PlaylistId,
                    NotificationType = NotificationType.AddedPlaylist,
                    Message          = $"Пользователь {user.Login} добавил новый плейлист под названием {playlist.PlaylistName}"
                }).Result;
                if (!notificationResult.OperationCompleted)
                {
                    throw new Exception(notificationResult.ErrorMessage);
                }
                return(new OkObjectResult(new { id = playlist.PlaylistId }));
            }
            catch
            {
                return(new StatusCodeResult(500));
            }
        }
Пример #3
0
        public async Task <IActionResult> Add(ArticleView result)
        {
            if (await _articleService.CheckIfSlugExist(result.Slug))
            {
                ModelState.AddModelError("", "Wpis o podanym linku istnieje");
            }

            if (!ModelState.IsValid)
            {
                // 1. Pobieranie listy tagów oraz kategorii
                ViewBag.Categories = await _categoryService.GetAll();

                ViewBag.Tags = await _tagService.GetAll();

                return(View(result));
            }

            // 2.Poprawnie zwalidowane post zapisuję do bazy danych

            // a. Pobranie dodatkowych informacji do artykułu | usera, url strony
            var user = await _userManager.GetUserAsync(User);

            var seoSettings = await _seoService.GetSeoSettings();

            // b. Utworzenie wpisu
            var articleModel = ArticleHelpers.ConvertToModel(result, user, seoSettings.MainUrl);
            var article      = await _articleService.Create(articleModel);

            if (article == false)
            {
                return(RedirectToAction("Index", "Admin"));
            }                                                                   // TODO: przekieruj na stronę z błędem

            // c. Zapis zdjęcia
            var medium = await _cloudService.AddFile(result.FeaturedImg, articleModel);

            // d. Wygenerowanie taxonomies
            await _taxonomyService.SaveCategories(await _categoryService.GetCategoriesByNames(result.Categories), articleModel);

            await _taxonomyService.SaveTags(await _tagService.GetCategoriesByNames(result.Tags), articleModel);

            return(RedirectToAction("List"));
        }
Пример #4
0
        public async Task <IActionResult> EditProfile(EditProfile model, int userId)
        {
            string imageFileName;
            var    dateTimeNow = DateTime.Now;
            var    createDate  = $"{dateTimeNow.Day}.{dateTimeNow.Month}.{dateTimeNow.Year} {dateTimeNow.Hour}:{dateTimeNow.Minute}:{dateTimeNow.Second}";

            try
            {
                var user = await db.Users.FindAsync(userId);

                if (user == null)
                {
                    return(new NotFoundObjectResult(new { msg = "Пользователь не найден" }));
                }
                if (model.Avatar != null)
                {
                    imageFileName = $"{user.Login}_user_{createDate}_" + model.Avatar.FileName;
                    if (user.AvatarFile != options.Value.DefaultUserImageFile)
                    {
                        user.Avatar = await cloudService.EditFile("", user.AvatarFile, "", imageFileName, model.Avatar.OpenReadStream());

                        user.AvatarFile = imageFileName;
                    }
                    else
                    {
                        user.Avatar = await cloudService.AddFile("", imageFileName, model.Avatar.OpenReadStream());

                        user.AvatarFile = imageFileName;
                    }
                }
                user.City    = model.City;
                user.Country = model.Country;
                user.Name    = model.Name;
                user.Surname = model.Surname;
                await db.SaveChangesAsync();

                return(new OkObjectResult(new { avatar = user.Avatar }));
            }
            catch
            {
                return(new StatusCodeResult(500));
            }
        }