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);
                }
            }
        }
예제 #2
0
        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);
        }
예제 #4
0
 public AsyncRequestResult BeginPostClimber(Comp_CompetitorRegistrationApiModel climber, RequestCompleted <Comp_CompetitorRegistrationApiModel> callback, Object asyncState)
 {
     return(BeginPostSerializableT("Calendar", "PostClimber", String.Empty, climber, callback, asyncState, true));
 }
예제 #5
0
 public Comp_CompetitorRegistrationApiModel PostClimber(Comp_CompetitorRegistrationApiModel climber)
 {
     return(PostSerializableT("Calendar", "PostClimber", String.Empty, climber));
 }