Exemple #1
0
        public IActionResult DistributeToSingers([Bind][FromForm] IEnumerable <SingerInfoViewModel> model, int songId, string returnUrl = null)
        {
            int distributed = 0;

            foreach (var singerInfo in model.Where(m => m.SelectedForAction))
            {
                var sheetsInfo = _sheetsInfoMapper.FindAll().FirstOrDefault(si => si.SongId == songId && si.SingerId == singerInfo.Id);
                if (sheetsInfo != null)
                {
                    sheetsInfo.Status = SheetInfoType.HasCopy;
                    _sheetsInfoMapper.Update(sheetsInfo);
                    distributed++;
                }
                else
                {
                    sheetsInfo = new Models.ManyToMany.SingerSong
                    {
                        SingerId = singerInfo.Id,
                        SongId   = songId,
                        Status   = SheetInfoType.HasCopy
                    };
                    _sheetsInfoMapper.Create(sheetsInfo);
                    distributed++;
                }
            }

            var song = _songMapper.Find(songId);

            song.SheetsAvailable -= distributed;
            _songMapper.Update(song);

            return(Redirect(returnUrl));
        }
        public IActionResult OrderSheets(int singerId, int songId, string filter = "current")
        {
            var user = _userMapper.FindBy(u => u.UserName == User.Identity.Name).FirstOrDefault();

            if (user == null || user.SingerId != singerId)
            {
                return(RedirectToAction("AccessDenied", "Account"));
            }
            var song = _songMapper.Find(songId);

            if (song.Current == false)
            {
                return(RedirectToAction(nameof(NotCurrentSong)));
            }

            var oldInfo = _sheetsInfoMapper.FindBy(si => si.SingerId == singerId && si.SongId == songId).FirstOrDefault();

            if (oldInfo == null)
            {
                var order = new SingerSong
                {
                    SingerId = singerId,
                    SongId   = songId,
                    Status   = SheetInfoType.Ordered
                };
                _sheetsInfoMapper.Create(order);
            }
            else if (oldInfo.Status == SheetInfoType.NoCopy)
            {
                oldInfo.Status = SheetInfoType.Ordered;
                _sheetsInfoMapper.Update(oldInfo);
            }
            return(RedirectToAction("Index", "Songs", new { filter = filter }, "song" + (songId)));
        }