Exemple #1
0
        public ActionResult EditClimber(uint index, long?climberId = null, long?compId = null)
        {
            ClimberApplication model;
            CompetitionModel   comp = null;
            var user = User.GetDbUser(db, false);

            if (climberId != null)
            {
                var app = db.CompetitionClimberTeams.Find(climberId);
                if (app == null)
                {
                    throw new System.Web.Http.HttpResponseException(System.Net.HttpStatusCode.NotFound);
                }
                if (!app.AllowedEdit(user))
                {
                    throw new System.Web.Http.HttpResponseException(System.Net.HttpStatusCode.Unauthorized);
                }
                model = new ClimberApplication(app);
                comp  = app.Climber.Competition;
                ViewBag.AllowEditName = comp.AllowedToAdd(user);
            }
            else
            {
                if (compId != null)
                {
                    comp = db.Competitions.Find(compId);
                }
                if (comp == null)
                {
                    throw new System.Web.Http.HttpResponseException(System.Net.HttpStatusCode.NotFound);
                }
                if (!comp.AllowedToAdd(user))
                {
                    throw new System.Web.Http.HttpResponseException(System.Net.HttpStatusCode.Unauthorized);
                }
                ViewBag.AllowEditName = true;
                model = new ClimberApplication();
            }
            ViewBag.Comp  = comp;
            ViewBag.Index = index;
            return(PartialView(model));
        }
Exemple #2
0
        public ActionResult EditClimberFromModel(uint index, long compId, ClimberApplication model)
        {
            CompetitionModel comp;

            ViewBag.Index = index;
            var user = User.GetDbUser(db, false);

            if (model.ApplicationId != null)
            {
                var app = db.CompetitionClimberTeams.Find(model.ApplicationId);
                if (app == null)
                {
                    throw new System.Web.Http.HttpResponseException(System.Net.HttpStatusCode.NotFound);
                }
                if (!app.AllowedEdit(user))
                {
                    throw new System.Web.Http.HttpResponseException(System.Net.HttpStatusCode.Unauthorized);
                }
                comp                  = app.Climber.Competition;
                model.Surname         = app.Climber.Person.Surname;
                model.Name            = app.Climber.Person.Name;
                model.YearOfBirth     = app.Climber.Person.DateOfBirth.Year;
                model.GenderP         = app.Climber.Person.GenderProperty;
                ViewBag.AllowEditName = comp.AllowedToAdd(user);
            }
            else
            {
                comp = db.Competitions.Find(compId);
                if (comp == null)
                {
                    throw new System.Web.Http.HttpResponseException(System.Net.HttpStatusCode.NotFound);
                }
                if (!comp.AllowedToAdd(user))
                {
                    throw new System.Web.Http.HttpResponseException(System.Net.HttpStatusCode.Unauthorized);
                }
                ViewBag.AllowEditName = true;
            }
            ViewBag.Comp = comp;
            return(PartialView("EditClimber", model));
        }
Exemple #3
0
        public ActionResult Climber(long compId, String divId, long regionId, ClimberApplication model = null, long?climberId = null)
        {
            var comp = db.Competitions.Find(compId);

            ViewBag.Comp     = comp;
            ViewBag.DivId    = divId;
            ViewBag.RegionId = regionId;

            if (climberId != null)
            {
                var app = db.CompetitionClimberTeams.Find(climberId.Value);
                if (app.Climber.CompId != compId || app.RegionId != regionId || !app.AllowedEdit(User.GetDbUser(db, false)))
                {
                    throw new System.Web.Http.HttpResponseException(System.Net.HttpStatusCode.Unauthorized);
                }
                model = new ClimberApplication(app);
            }
            ViewBag.DisplayValidation = false;
            ViewBag.AllowEditName     = comp.AllowedToAdd(User.GetDbUser(db, false));
            return(PartialView(model));
        }
Exemple #4
0
        public ActionResult SaveClimber(long compId, long regionId, String divId, ClimberApplication model)
        {
            var comp = db.Competitions.Find(compId);

            ViewBag.Comp              = comp;
            ViewBag.DivId             = divId;
            ViewBag.RegionId          = regionId;
            ViewBag.DisplayValidation = true;
            ViewBag.AllowEditName     = comp.AllowedToAdd(User.GetDbUser(db, false));
            if (!ModelState.IsValid)
            {
                return(PartialView("Climber", model));
            }
            foreach (var s in model.Validate(User.GetDbUser(db, false), db, ViewBag.Comp))
            {
                ModelState.AddModelError(String.Empty, s);
            }
            if (!ModelState.IsValid)
            {
                return(PartialView("Climber", model));
            }
            return(PartialView("ConfirmClimber", model));
        }
Exemple #5
0
        public ActionResult ConfirmClimber(long compId, long regionId, String divId, ClimberApplication model)
        {
            ViewBag.DisplayValidation = true;
            bool hasLock = false;

            try
            {
                Monitor.Enter(APPLICATIONS_LOCKER, ref hasLock);
                var comp = db.Competitions.Find(compId);
                var user = User.GetDbUser(db, false);
                ViewBag.Comp          = comp;
                ViewBag.AllowEditName = comp.AllowedToAdd(user);
                ViewBag.DivId         = divId;
                ViewBag.RegionId      = regionId;
                if (!ModelState.IsValid)
                {
                    return(PartialView("Climber", model));
                }
                foreach (var s in proc.SaveClimberApp(user, compId, model))
                {
                    ModelState.AddModelError(String.Empty, s);
                }
                if (!ModelState.IsValid)
                {
                    return(PartialView("Climber", model));
                }
                return(PartialView(model));
            }
            finally
            {
                if (hasLock)
                {
                    Monitor.Exit(APPLICATIONS_LOCKER);
                }
            }
        }
Exemple #6
0
 public ActionResult EditorForm(long compId, int index, long?selectedRegion = null, ClimberApplication model = null, long?appId = null)
 {
     ViewBag.Index = index;
     PrepareEditorForm(compId, model == null ? selectedRegion : (model.TeamId ?? selectedRegion));
     return(PartialView(model ?? new ClimberApplication()));
 }
        private String[] SaveClimberApp(UserProfileModel user, long compId, ClimberApplication model, bool saveChanges)
        {
            if (model == null)
            {
                return new String[] { "Модель не загружена" }
            }
            ;
            var comp = db.Competitions.Find(compId);

            if (comp == null)
            {
                return new String[] { "Неверные соревнования" }
            }
            ;
            String[]         empty = new String[0];
            PersonModel      personToApply;
            Comp_ClimberTeam existingApp;
            var retVal = model.Validate(user, db, comp, out personToApply, out existingApp);

            if (retVal.Length > 0)
            {
                return(retVal);
            }

            //если надо улалить заявку или заменить участника
            if (model.IsDel || (existingApp != null && (personToApply == null || personToApply.Iid != existingApp.Climber.PersonId)))
            {
                if (model.IsDel && existingApp == null)
                {
                    return(empty);
                }

                //удаляем текущую заявку
                RemoveApp(existingApp);
                if (model.IsDel)
                {
                    //если надо только удалить  то выйдем из функции
                    if (saveChanges)
                    {
                        db.SaveChanges();
                    }
                    return(empty);
                }
                existingApp = null;
            }

            //создадим заявку
            var climber = existingApp != null ? existingApp.Climber : null;

            if (climber == null)
            {
                //добавим человека
                if (personToApply == null)
                {
                    var newIid = GenerateLicenseId(model.TeamId.Value);
                    personToApply = new PersonModel
                    {
                        Surname        = model.Surname,
                        Name           = model.Name,
                        GenderProperty = model.GenderP.Value,
                        DateOfBirth    = new DateTime(model.YearOfBirth.Value, 01, 05),
                        Competitions   = new List <Comp_CompetitiorRegistrationModel>(),
                        Coach          = String.Empty,
                        Email          = String.Empty,
                        HomeAddress    = String.Empty,
                        Patronymic     = String.Empty
                    };
                    if (newIid != null)
                    {
                        personToApply.Iid = newIid.Value;
                    }
                    db.People.Add(personToApply);
                }
                //найдем его заявку на данные соревы (если заявки нет - то создадим)
                climber = personToApply.Competitions.FirstOrDefault(c => c.CompId == comp.Iid);
                if (climber == null)
                {
                    climber = new Comp_CompetitiorRegistrationModel
                    {
                        CompId = comp.Iid,
                        Teams  = new List <Comp_ClimberTeam>()
                    };
                    personToApply.Competitions.Add(climber);
                }
            }
            //обновим заявку
            climber.Boulder = model.Boulder;
            climber.GroupId = model.GroupId;
            climber.Lead    = model.Lead;
            climber.Speed   = model.Speed;
            climber.Qf      = model.Qf.Value;
            //добавим команды
            if (existingApp == null)
            {
                int pos = 1;
                for (; climber.Teams.Count(pt => pt.RegionOrder == pos) > 0; pos++)
                {
                    ;
                }
                climber.Teams.Add(new Comp_ClimberTeam {
                    RegionId = model.TeamId.Value, RegionOrder = pos
                });
            }
            if (saveChanges)
            {
                db.SaveChanges();
            }
            return(empty);
        }
 public String[] SaveClimberApp(UserProfileModel user, long compId, ClimberApplication model)
 {
     return(SaveClimberApp(user, compId, model, true));
 }