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)); }
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)); }
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)); }
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)); }
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); } } }
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)); }