Example #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));
            }
        }
Example #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));
            }
        }