コード例 #1
0
        public async Task <ActionResult <RinkViewModel> > Post(Rink item)
        {
            EnsureOnlyOneWinningRink(item);

            _context.Rinks.Add(item);
            await _context.SaveChangesAsync();

            return(CreatedAtAction(nameof(Get), new { id = item.Id }, _mapper.Map <RinkViewModel>(item)));
        }
コード例 #2
0
        public async Task <IActionResult> Put(long id, Rink item)
        {
            if (id != item.Id)
            {
                return(BadRequest());
            }

            EnsureOnlyOneWinningRink(item);

            _context.Entry(item).State = EntityState.Modified;
            await _context.SaveChangesAsync();

            return(NoContent());
        }
コード例 #3
0
        private void EnsureOnlyOneWinningRink(Rink item)
        {
            var existingWinningRinks = _context.Rinks
                                       .Where(o =>
                                              o.WasWinningRink == true &&
                                              o.SeasonId == item.SeasonId &&
                                              o.CompetitionId == item.CompetitionId &&
                                              o.Id != item.Id)
                                       .Count();

            if (existingWinningRinks > 0)
            {
                throw new Exception("Already a winning rink for this season and competition.");
            }
        }