public async Task <JumperResponseModel> MergeJumpers(JumperMergeRequestModel model)
        {
            using (var trans = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
            {
                foreach (var sourceJumperId in model.SourceJumperIds)
                {
                    await _database.ExecuteAsync(@"
                        UPDATE final_standings SET jumper_id = @DestinationJumperId WHERE jumper_id = @SourceJumperId;
                        UPDATE final_results SET jumper_id = @DestinationJumperId WHERE jumper_id = @SourceJumperId;
                        UPDATE qualification_results SET jumper_id = @DestinationJumperId WHERE jumper_id = @SourceJumperId;
                        ", new { DestinationJumperId = model.DestinationJumperId, SourceJumperId = sourceJumperId });

                    await _database.Delete <Jumper>(sourceJumperId);
                }

                await _database.ExecuteAsync("REFRESH MATERIALIZED VIEW jumper_results");

                trans.Complete();
            }

            return(await GetJumper(model.DestinationJumperId));
        }
Exemple #2
0
 public Task <JumperResponseModel> MergeJumpers([FromBody] JumperMergeRequestModel model)
 {
     return(_jumperService.MergeJumpers(model));
 }