private Comp_CompetitiorRegistrationModel SaveOneClimber(Comp_CompetitorRegistrationApiModel climber, CompetitionModel comp) { bool hasLock = false; try { Monitor.Enter(ApplicationsController.APPLICATIONS_LOCKER, ref hasLock); return(SaveOneClimberSynchronized(climber, comp)); } finally { if (hasLock) { Monitor.Exit(ApplicationsController.APPLICATIONS_LOCKER); } } }
private static Comp_CompetitorRegistrationApiModel ToApiSimple(Comp_CompetitiorRegistrationModel model) { Comp_CompetitorRegistrationApiModel res = new Comp_CompetitorRegistrationApiModel(); res.License = model.PersonId; res.Surname = model.Person.Surname; res.Name = model.Person.Name; var team = model.Teams.OrderBy(t => t.RegionOrder).FirstOrDefault(); res.TeamID = (team == null) ? 0 : team.RegionId; res.GroupID = model.CompAgeGroup.AgeGroupId; res.YearOfBirth = model.Person.DateOfBirth.Year; res.Female = model.Person.GenderFemale; res.Razr = model.Qf.GetFriendlyValue(); res.Bib = model.SecretaryId; res.Lead = (ApplicationType)model.Lead; res.Speed = (ApplicationType)model.Speed; res.Boulder = (ApplicationType)model.Boulder; res.RankingLead = model.RankingLead; res.RankingSpeed = model.RankingiSpeed; res.RankingBoulder = model.RankingBoulder; return(res); }
private Comp_CompetitiorRegistrationModel SaveOneClimberSynchronized(Comp_CompetitorRegistrationApiModel climber, CompetitionModel comp) { var group = comp.AgeGroups.FirstOrDefault(g => g.AgeGroupId == climber.GroupID); if (group == null) { throw new HttpResponseException(HttpStatusCode.NotFound); } String surname = climber.Surname.GetUnifiedName(); String name = climber.Name.GetUnifiedName(); if (climber.YearOfBirth < 20) { climber.YearOfBirth += 2000; } else if (climber.YearOfBirth < 100) { climber.YearOfBirth += 1900; } PersonModel person; if (climber.License > 0) { person = db.People.Find(climber.License); if (person != null && !( person.Surname.Equals(surname, StringComparison.OrdinalIgnoreCase) && person.Name.Equals(name, StringComparison.OrdinalIgnoreCase) && person.YearOfBirth == climber.YearOfBirth && person.GenderFemale == climber.Female ) ) { person.Surname = surname; person.Name = name; if (person.YearOfBirth != climber.YearOfBirth) { person.DateOfBirth = new DateTime(climber.YearOfBirth, person.DateOfBirth.Month, person.DateOfBirth.Day); } person.GenderFemale = climber.Female; } } else { person = db.People.FirstOrDefault(p => p.Surname.Equals(surname, StringComparison.OrdinalIgnoreCase) && p.Name.Equals(name, StringComparison.OrdinalIgnoreCase) && p.GenderFemale == climber.Female && p.DateOfBirth.Year == climber.YearOfBirth); } if (person == null) { person = new PersonModel { Surname = surname, Name = name, GenderFemale = climber.Female, DateOfBirth = new DateTime(climber.YearOfBirth, 1, 1), Patronymic = String.Empty, Coach = String.Empty, HomeAddress = String.Empty, Email = String.Empty, Competitions = new List <Comp_CompetitiorRegistrationModel>() }; db.People.Add(person); } var compReg = person.Competitions.FirstOrDefault(r => r.CompId == comp.Iid); if (compReg == null) { compReg = new Comp_CompetitiorRegistrationModel { CompId = comp.Iid, Person = person, GroupId = group.Iid, Teams = new List <Comp_ClimberTeam>() }; person.Competitions.Add(compReg); } compReg.Lead = (ApplicationDisplayEnum)climber.Lead; compReg.Speed = (ApplicationDisplayEnum)climber.Speed; compReg.Boulder = (ApplicationDisplayEnum)climber.Boulder; compReg.Qf = climber.Razr.GetEnumValue <Razryad>(); compReg.RankingLead = climber.RankingLead; compReg.RankingiSpeed = climber.RankingSpeed; compReg.RankingBoulder = climber.RankingBoulder; compReg.SecretaryId = climber.Bib; List <long> teamList = new List <long>(); var mtClimber = climber as Comp_MultipleTeamsClimber; if (mtClimber == null) { teamList.Add(climber.TeamID); } else { teamList.AddRange(mtClimber.Teams); } int i = 0; foreach (var teamId in teamList) { if (db.Regions.Count(r => r.Iid == teamId) < 1) { throw new HttpResponseException(HttpStatusCode.NotFound); } var clmteam = compReg.Teams.FirstOrDefault(t => t.RegionId == teamId); if (clmteam == null) { compReg.Teams.Add(new Comp_ClimberTeam { RegionId = teamId, RegionOrder = (++i) }); } else { clmteam.RegionOrder = (++i); } } var delList = compReg.Teams.ToList().Where(t => !teamList.Contains(t.RegionId)).ToArray(); for (i = 0; i < delList.Length; i++) { db.CompetitionClimberTeams.Remove(delList[i]); } return(compReg); }
public AsyncRequestResult BeginPostClimber(Comp_CompetitorRegistrationApiModel climber, RequestCompleted <Comp_CompetitorRegistrationApiModel> callback, Object asyncState) { return(BeginPostSerializableT("Calendar", "PostClimber", String.Empty, climber, callback, asyncState, true)); }
public Comp_CompetitorRegistrationApiModel PostClimber(Comp_CompetitorRegistrationApiModel climber) { return(PostSerializableT("Calendar", "PostClimber", String.Empty, climber)); }