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