public async Task <IActionResult> Results(ResultViewModel model, int competitionId, int competitionInstanceId, int eventId, int heatId, string userId) { if (ModelState.IsValid) { var entitiy = new Result { Modified = DateTime.Now, Created = model.Created, Notes = model.Notes, Club = model.Club, Name = model.Name, Gender = model.Gender, Country = model.Country, FinalTime = model.GunTime, HeatId = model.HeatId, Nationality = model.Nationality, Status = model.Status, UserId = model.UserId }; var status = await _resultService.EditAsync(entitiy); return(RedirectToAction("Heat", "Admin", new { heatId = heatId, eventId = eventId, competitionInstanceId = competitionInstanceId, competitionId = competitionId })); } return(View(model)); }
public async Task <IActionResult> EditContestantInEvent(EditContestantInEventDto model, string userId, int competitionInstanceId, int competitionId, int eventId) { if (ModelState.IsValid) { // Get The Chip Contestants in About To Be Connected To var chip = await _chipService.GetChipByNumberAsync(model.ChipNumber); if (chip == null && model.ChipNumber != 0) { return(Json("Chip with this Number does not exist")); } // Get oldChipInHeat To Remove var oldChipInHeat = await _chipService.GetChipInHeatByCodeUserIdAndHeatId(model.OldChipCode, userId, model.OldHeatId); if (oldChipInHeat != null) { var chipSuccess = await _chipService.RemoveChipInHeatAsync(oldChipInHeat); if (!chipSuccess) { return(Json("chipInHeatToRemove not successfully removed")); } } if (model.ChipNumber != 0) { // Edit Fields in Contestants New Chip chip.LastCompetitionInstanceId = competitionInstanceId; chip.LastUserId = userId; chip.LastSeen = DateTime.Now; var chipEdit = await _chipService.EditChipAsync(chip); if (chipEdit != true) { return(Json("Edit Chip Failed")); } // Create New ChipInHeat var newChipInHeat = new ChipInHeat { UserId = userId, ChipCode = chip.Code, HeatId = model.HeatId, Valid = true }; // Assigning New ChipInHeat To User try { await _chipService.AssignChipToUserInHeatAsync(newChipInHeat); } catch (Exception e) { return(Json(e.Message)); } } // Get ContestantInHeat To Remove var contestantInHeat = await _heatService.GetContestantsInHeatByUserIdAndHeatIdAsync(userId, model.OldHeatId); if (contestantInHeat == null) { return(Json("contestantInHeat does not match this userId and heatId")); } // Get Old Results to keep track of data before it is deleted var oldResult = await _resultService.GetResultAsync(userId, model.OldHeatId); if (oldResult == null) { return(Json("Result does not match this userId and heatId")); } // Removes ContestantInHeat and Result await _heatService.RemoveAsyncContestantInHeat(contestantInHeat); // Create New ContestantIn Heat To Replace The Old One // New Result Will Be Created Automatically var newContestantInHeat = new ContestantInHeat { HeatId = model.HeatId, UserId = userId, Bib = model.Bib, Team = model.Team, Modified = DateTime.Now }; // Save newContestantInHeat In Database await _heatService.AddAsyncContestantInHeat(newContestantInHeat); // Get The New Result To Update Its Data var newResult = await _resultService.GetResultAsync(userId, newContestantInHeat.HeatId); if (newResult == null) { return(Json("newResult was not created which means newContestantInHeat was not created")); } // Edit Field That Came From The Model newResult.Modified = DateTime.Now; newResult.HeatId = model.HeatId; newResult.Status = model.Status; newResult.Notes = model.Notes; newResult.UserId = userId; // Edit Fields That Came From The Old Result newResult.Name = oldResult.Name; newResult.Club = oldResult.Club; newResult.Country = oldResult.Country; newResult.Created = oldResult.Created; newResult.Gender = oldResult.Gender; newResult.FinalTime = oldResult.FinalTime; newResult.Nationality = oldResult.Nationality; // Save newResult In Database await _resultService.EditAsync(newResult); return(RedirectToAction("Contestants", "CompetitionInstance", new { competitionId, competitionInstanceId })); } return(View(model)); }