Esempio n. 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));
            }
        }
Esempio n. 2
0
        public async Task <IActionResult> AddMusic([FromForm] AddMusicModel model)
        {
            User user = await db.Users.FindAsync(UserId);

            string dateTimeNow = DateTime.Now.ToString();

            if (await db.Musics.Where(m => m.UserId == user.UserId && m.MusicName == model.MusicName).FirstOrDefaultAsync() != null)
            {
                return(Ok(new { msg = $"У вас уже есть запись с названием {model.MusicName}" }));
            }
            try
            {
                if (CloudStorageAccount.TryParse(storageConfig.Value.ConnectionString, out CloudStorageAccount storageAccount))
                {
                    CloudBlobClient    blobClient     = storageAccount.CreateCloudBlobClient();
                    CloudBlobContainer container      = blobClient.GetContainerReference(storageConfig.Value.ContainerName);
                    CloudBlockBlob     musicBlockBlob = container.GetBlockBlobReference($"{user.Login}_{dateTimeNow}_" + model.MusicFile.FileName);
                    if (await musicBlockBlob.ExistsAsync())
                    {
                        return(Ok(new { msg = $"В вашем хранилище уже есть файл {model.MusicFile.FileName}" }));
                    }
                    if (model.MusicImageFile != null)
                    {
                        CloudBlockBlob imageBlockBlob = container.GetBlockBlobReference($"{user.Login}_music_{dateTimeNow}_" + model.MusicImageFile.FileName);
                        if (await imageBlockBlob.ExistsAsync())
                        {
                            return(Ok(new { msg = $"В вашем хранилище уже есть файл {model.MusicImageFile.FileName}" }));
                        }
                        await imageBlockBlob.UploadFromStreamAsync(model.MusicImageFile.OpenReadStream());
                    }
                    await musicBlockBlob.UploadFromStreamAsync(model.MusicFile.OpenReadStream());

                    db.Musics.Add(new Music
                    {
                        MusicName         = model.MusicName,
                        MusicFileName     = $"{user.Login}_{dateTimeNow}_" + model.MusicFile.FileName,
                        MusicImageName    = model.MusicImageFile == null?"default.png":$"{user.Login}_music_{dateTimeNow}_" + model.MusicImageFile.FileName,
                        UserId            = user.UserId,
                        DateOfPublication = DateTime.Now.Date,
                        MusicGenreId      = model.MusicGenreId
                    });
                    await db.SaveChangesAsync();

                    return(Ok(new { msg = "" }));
                }
                return(StatusCode(500));
            }
            catch
            {
                return(StatusCode(500));
            }
        }
Esempio n. 3
0
        public async Task <IActionResult> AddMusic([FromForm] AddMusicModel model)
        {
            User user = await db.Users.FindAsync(UserId);

            string dateTimeNow = $"{DateTime.Now.Day}.{DateTime.Now.Month}.{DateTime.Now.Year} {DateTime.Now.Hour}:{DateTime.Now.Minute}:{DateTime.Now.Second}";

            if (await db.Musics.Where(m => m.UserId == user.UserId && m.MusicName == model.MusicName).FirstOrDefaultAsync() != null)
            {
                return(Ok(new { msg = $"У вас уже есть запись с названием {model.MusicName}" }));
            }
            string musicFileName    = $"{user.Login}_{dateTimeNow}_" + model.MusicFile.FileName;
            string sharingLinkMusic = "";
            string sharingLinkImage = "";

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

                db.Musics.Add(new Music
                {
                    MusicName         = model.MusicName,
                    MusicFileName     = musicFileName,
                    MusicUrl          = sharingLinkMusic,
                    MusicImageName    = model.MusicImageFile == null ? "default.png" : $"{user.Login}_music_{dateTimeNow}_" + model.MusicImageFile.FileName,
                    MusicImageUrl     = model.MusicImageFile == null ? "https://www.dropbox.com/s/jattf04mjk4x903/default.png?dl=1" : sharingLinkImage,
                    UserId            = user.UserId,
                    DateOfPublication = DateTime.Now.Date,
                    MusicGenreId      = model.MusicGenreId
                });
                await db.SaveChangesAsync();

                return(Ok(new { msg = "" }));
            }
            catch
            {
                return(StatusCode(500));
            }
        }
Esempio n. 4
0
 public IActionResult AddMusic([FromForm] AddMusicModel model)
 {
     return(musicManager.AddMusic(model, UserId).Result);
 }