Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
 public Task <CupResponseModel> UpdateCup(int id, [FromBody] CupRequestModel model)
 {
     return(_cupService.UpdateCup(id, model));
 }
Ejemplo n.º 4
0
 public Task <CupResponseModel> CreateCup([FromBody] CupRequestModel model)
 {
     return(_cupService.CreateCup(model));
 }