public ServiceMessage Update(TournamentEditDTO tournamentEditDTO) { string message = ""; bool success = true; if (success = Validate(tournamentEditDTO, ref message)) { string sportName = tournamentEditDTO.SportName; string oldName = tournamentEditDTO.Name; DateTime oldDateOfStart = tournamentEditDTO.DateOfStart; string newName = tournamentEditDTO.NewName; DateTime newDateOfStart = tournamentEditDTO.NewDateOfStart; try { TournamentEntity tournamentEntity = unitOfWork.Tournaments.Get(oldName, sportName, oldDateOfStart); if (tournamentEntity != null) { bool anyDateEarlier = tournamentEntity.Events.Any(_event => _event.DateOfEvent < tournamentEntity.DateOfStart); if (!anyDateEarlier) { tournamentEntity.Name = newName; tournamentEntity.DateOfStart = newDateOfStart; unitOfWork.Commit(); message = "Edited tournament"; } else { message = "Tournament cannot start later then event"; success = false; } } else { message = "Such tournament was not found"; success = false; } } catch (Exception ex) { message = ExceptionMessageBuilder.BuildMessage(ex); success = false; } } return(new ServiceMessage(message, success)); }
private bool Validate(TournamentEditDTO tournamentEditDTO, ref string message) { bool isValid = true; if (tournamentEditDTO.NewDateOfStart < DateTime.Now) { message = "Invalid date: cannot start tournament in the past"; isValid = false; } else if (String.IsNullOrEmpty(tournamentEditDTO.NewName)) { message = "Invalid name: cannot be empty"; isValid = false; } return(isValid); }
private void Edit(TournamentBaseModel tournament, IEnumerable <ParticipantBaseModel> tournamentParticipants, IEnumerable <ParticipantBaseModel> sportParticipants) { TournamentManageViewModel viewModel = new TournamentManageViewModel(tournament, tournamentParticipants, sportParticipants); TournamentManageControl control = new TournamentManageControl(viewModel); Window window = WindowFactory.CreateByContentsSize(control); viewModel.InfoViewModel.TournamentEdited += (s, e) => { TournamentEditModel tournamentEditModel = e.Tournament; TournamentEditDTO tournamentEditDTO = Mapper.Map <TournamentEditModel, TournamentEditDTO>(tournamentEditModel); using (ITournamentService service = factory.CreateTournamentService()) { ServiceMessage serviceMessage = service.Update(tournamentEditDTO); RaiseReceivedMessageEvent(serviceMessage.IsSuccessful, serviceMessage.Message); if (serviceMessage.IsSuccessful) { Notify(); } } }; viewModel.ParticipantViewModel.TournamentEdited += (s, e) => { TournamentEditModel tournamentEditModel = e.Tournament; TournamentEditDTO tournamentEditDTO = Mapper.Map <TournamentEditModel, TournamentEditDTO>(tournamentEditModel); using (ITournamentService service = factory.CreateTournamentService()) { ServiceMessage serviceMessage = service.UpdateParticipants(tournamentEditDTO); RaiseReceivedMessageEvent(serviceMessage.IsSuccessful, serviceMessage.Message); if (serviceMessage.IsSuccessful) { Notify(); } } }; window.Show(); }
public ServiceMessage UpdateParticipants(TournamentEditDTO tournamentEditDTO) { return(new ServiceMessage("No permissions", false)); }
public ServiceMessage UpdateParticipants(TournamentEditDTO tournamentEditDTO) { string message = ""; bool success = true; string name = tournamentEditDTO.Name; string sportName = tournamentEditDTO.SportName; DateTime dateOfStart = tournamentEditDTO.DateOfStart; List <ParticipantBaseDTO> participants = tournamentEditDTO.Participants; if (participants != null) { try { TournamentEntity tournamentEntity = unitOfWork.Tournaments.Get(name, sportName, dateOfStart); if (tournamentEntity != null) { IEnumerable <ParticipantEntity> participantEntities = participants.Select(participant => { string _name = participant.Name; string _sportName = participant.SportName; string _countryName = participant.CountryName; return(unitOfWork.Participants.Get(_name, _sportName, _countryName)); }); var deleted = tournamentEntity .Participants .Where(p => !participantEntities.Select(pe => pe.Id).Contains(p.Id) ) .ToList(); var added = participantEntities .Where(pe => !tournamentEntity.Participants.Select(p => p.Id).Contains(pe.Id) ) .ToList(); foreach (var deletedParticipant in deleted) { tournamentEntity.Participants.Remove(deletedParticipant); } foreach (var addedParticipant in added) { tournamentEntity.Participants.Add(addedParticipant); } unitOfWork.Commit(); message = "Edited tournament"; } else { message = "Such tournament was not found"; success = false; } } catch (Exception ex) { message = ExceptionMessageBuilder.BuildMessage(ex); success = false; } } else { message = "Invalid participants argument"; success = false; } return(new ServiceMessage(message, success)); }