public async Task <CupResponseModel> UpdateCup(int id, CupRequestModel model) { var cup = ToCup(model); var newCupDates = model.CupDates .Where(cd => !cd.Id.HasValue) .Select(cd => ToCupDate(id, cd)) .ToArray(); var deletedCupDates = model.CupDates .Where(cd => cd.Id.HasValue && cd.Destroy) .Select(cd => cd.Id.Value) .ToArray(); var updatedCupDates = model.CupDates .Where(cd => cd.Id.HasValue && !cd.Destroy) .Select(cd => ToCupDate(id, cd)) .ToArray(); await ConnectTournaments(cup.GameVersion, newCupDates.Concat(updatedCupDates).ToArray()); using (var trans = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { await _database.Update <Cup>(id, cup); foreach (var cupDate in newCupDates) { await _database.Insert(cupDate); } foreach (var cupDateId in deletedCupDates) { await _database.Delete <CupDate>(cupDateId); } foreach (var cupDate in updatedCupDates) { await _database.Update <CupDate>(cupDate.Id, cupDate); } trans.Complete(); } return(await GetCup(id)); }
public async Task <CupResponseModel> CreateCup(CupRequestModel model) { Cup cup; using (var trans = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { cup = await _database.Insert(ToCup(model)); var cupDates = model.CupDates.Select(cd => ToCupDate(cup.Id, cd)).ToArray(); await ConnectTournaments(cup.GameVersion, cupDates); foreach (var cupDate in cupDates) { await _database.Insert(cupDate); } trans.Complete(); } return(await GetCup(cup.Id)); }
public Task <CupResponseModel> UpdateCup(int id, [FromBody] CupRequestModel model) { return(_cupService.UpdateCup(id, model)); }
public Task <CupResponseModel> CreateCup([FromBody] CupRequestModel model) { return(_cupService.CreateCup(model)); }