예제 #1
0
        public ResponseBase Add(Music music, Model.File WAVFile, Model.File MP3File)
        {
            var res = new ResponseBase();

            music.CreateDate = DateTime.Now;
            res.Success      = true;
            if (music.Tags?.FirstOrDefault() != null)
            {
                var tgRes = TagService.GetAll();
                res.Success = tgRes.Success;
                if (res.Success)
                {
                    music.Tags = tgRes.Entities
                                 .Where(dbTag => music.Tags.Any(tag => tag.ID == dbTag.ID))
                                 .ToList();
                }
                else
                {
                    res.Message = tgRes.Message;
                }
            }
            if (music.Artist?.User?.UserName != null)
            {
                music.Artist = _usersRep.GetArtistByName(music.Artist.User.UserName)?.Artist;
                if (music.Artist == null)
                {
                    res.Success = false;
                    res.Message = "לא נמצא אמן עם שם זה";
                }
            }
            if (res.Success && WAVFile != null)
            {
                WAVFile.UserId = music.Artist.Id;

                res = FsService.StoreFile(WAVFile);
                if (res.Success)
                {
                    music.WAVFile   = (res as EntityResponse <Model.File>).Entity;
                    music.WAVFileID = music.WAVFile.FileId;
                }
            }

            if (res.Success && MP3File != null)
            {
                MP3File.UserId = music.Artist.Id;
                res            = FsService.StoreFile(MP3File);
                if (res.Success)
                {
                    music.MP3File   = (res as EntityResponse <Model.File>).Entity;
                    music.MP3FileID = music.MP3File.FileId;
                }
            }
            if (res.Success)
            {
                if (music.MusicLength == TimeSpan.Zero)
                {
                    res.Success = false;
                    res.Message = "יש להזין אורך יצירה";
                }
            }
            if (res.Success)
            {
                // update async artist report by updating his pdf file
                _pdfService.ArtistAddMusicAsync(DateTime.Now, music.HebrewName,
                                                music.MusicComposer, music.MusicPerformer, music.Exceptions, music.MusicWriter,
                                                music.Artist.Id, WebConf.FSBaseRoute);
                res = base.Add(music);
            }
            return(res);
        }
예제 #2
0
        public ResponseBase Update(Music musicData, int musicId, Model.File WAVFile, Model.File MP3File)
        {
            ResponseBase res = this.GetByID(musicId);

            if (res.Success)
            {
                var dbMusic = (res as EntityResponse <Music>).Entity;
                dbMusic.UpdateDate     = DateTime.Now;
                dbMusic.BPM            = musicData.BPM;
                dbMusic.Comment        = musicData.Comment;
                dbMusic.Copyrights     = musicData.Copyrights;
                dbMusic.CostLevel      = musicData.CostLevel;
                dbMusic.EnglishName    = musicData.EnglishName;
                dbMusic.Exceptions     = musicData.Exceptions;
                dbMusic.HebrewName     = musicData.HebrewName;
                dbMusic.MusicComposer  = musicData.MusicComposer;
                dbMusic.MusicLength    = musicData.MusicLength;
                dbMusic.MusicPerformer = musicData.MusicPerformer;
                dbMusic.MusicWriter    = musicData.MusicWriter;
                dbMusic.SongText       = musicData.SongText;
                dbMusic.Status         = musicData.Status;
                musicData.Tags         = musicData.Tags ?? new List <Tag>();

                var addTagList = musicData.Tags
                                 .Where(tg => !dbMusic.Tags.Any(dbTg => dbTg.ID == tg.ID))
                                 ?.Select(tg => tg.ID);

                if (addTagList != null && addTagList.Any())
                {
                    res = TagService.GetTagList(addTagList);
                    if (res.Success)
                    {
                        dbMusic.Tags.AddRange((res as EntityAllResponse <Tag>).Entities);
                    }
                }

                if (res.Success)
                {
                    dbMusic.Tags.RemoveAll(tg => !musicData.Tags.Any(x => x.ID == tg.ID));

                    if (WAVFile != null)
                    {
                        res = FsService.StoreFile(WAVFile);
                        if (res.Success)
                        {
                            if (dbMusic.WAVFile != null)
                            {
                                dbMusic.WAVFile.version = (res as EntityResponse <Model.File>).Entity.version;
                            }
                            else
                            {
                                dbMusic.WAVFile   = (res as EntityResponse <Model.File>).Entity;
                                dbMusic.WAVFileID = dbMusic.WAVFile.FileId;
                            }
                        }
                    }
                }

                if (res.Success && MP3File != null)
                {
                    res = FsService.StoreFile(MP3File);
                    if (res.Success)
                    {
                        if (dbMusic.MP3File != null)
                        {
                            dbMusic.MP3File.version = (res as EntityResponse <Model.File>).Entity.version;
                        }
                        else
                        {
                            dbMusic.MP3File   = (res as EntityResponse <Model.File>).Entity;
                            dbMusic.MP3FileID = dbMusic.MP3File.FileId;
                        }
                    }
                }

                if (res.Success)
                {
                    res = base.Update(dbMusic);
                }
            }

            return(res);
        }