protected ActionResult SaveTree(ImportTreesModel model, Trip trip, int treeId, bool saveUnlessOptionalErrors) { var tree = trip.FindTreeById(treeId); var treeModel = model.FindTreeById(tree.Id); Mapper.Map(treeModel, tree); var siteModel = model.FindSiteContainingTreeWithId(tree.Id); string modelPrefix = $"Sites[{model.Sites.IndexOf(siteModel)}].Trees[{siteModel.Trees.IndexOf(treeModel)}]."; this.ValidateMappedModel <TreeBase, ImportTreeModel>(tree, modelPrefix, ValidationTag.Required); if (!ModelState.IsValid) { return(Request.IsAjaxRequest() ? PartialView("TreePartial", model).AddViewData("treeId", tree.Id) : View(model)); } this.ValidateMappedModel <TreeBase, ImportTreeModel>(tree, modelPrefix, ValidationTag.Optional); if (!ModelState.IsValid && saveUnlessOptionalErrors) { treeModel.HasOptionalErrors = true; model.HasOptionalErrors = true; return(Request.IsAjaxRequest() ? PartialView("TreePartial", model).AddViewData("treeId", tree.Id) : View(model)); } tree.SetTripDefaults(); Repositories.Imports.Save(trip); Uow.Persist(); treeModel.IsEditing = false; return(Request.IsAjaxRequest() ? PartialView("TreePartial", model).AddViewData("treeId", tree.Id) : View(model)); }
protected ActionResult SaveSite(ImportSitesModel model, Trip trip, int siteId, bool saveUnlessOptionalErrors) { var siteModel = model.FindSiteById(siteId); var site = trip.FindSiteById(siteId); Mapper.Map(siteModel, site); string modelPrefix = $"Sites[{model.Sites.IndexOf(siteModel)}]."; this.ValidateMappedModel <Site, ImportSiteModel>(site, modelPrefix, ValidationTag.Required); if (!ModelState.IsValid) { return(Request.IsAjaxRequest() ? PartialView("SitePartial", model).AddViewData("siteId", site.Id) : View(model)); } this.ValidateMappedModel <Site, ImportSiteModel>(site, modelPrefix, ValidationTag.Optional); if (!ModelState.IsValid && saveUnlessOptionalErrors) { siteModel.HasOptionalError = true; model.HasOptionalErrors = true; return(Request.IsAjaxRequest() ? PartialView("SitePartial", model).AddViewData("siteId", site.Id) : View(model)); } site.SetTripDefaults(); Repositories.Imports.Save(trip); Uow.Persist(); siteModel.IsEditing = false; return(Request.IsAjaxRequest() ? PartialView("SitePartial", model).AddViewData("siteId", site.Id) : View(model)); }
public virtual ActionResult Remove(int id) { var reference = Repositories.Photos.FindReferenceById(id); if (!reference.IsAuthorizedToRemove(User)) { return(new UnauthorizedResult()); } Repositories.Photos.Remove(reference); Uow.Persist(); return(PhotoRemoval(reference)); }
public virtual ActionResult CompleteRegistration(string token) { if (!string.IsNullOrEmpty(token)) { var user = Repositories.Users.FindByEmailVerificationToken(token); if (user != null && !user.IsEmailVerified) { user.VerifyEmail(token); Repositories.Users.Save(user); Uow.Persist(); return(View(true)); } } return(View(false)); }
public virtual ActionResult Trees(int id) { var trip = Repositories.Imports.FindById(id); if (!User.IsAuthorizedToEdit(trip)) { return(new UnauthorizedResult()); } trip.InitializeTrees(); Uow.Persist(); var model = Mapper.Map(trip, new ImportTreesModel()); return(View(model)); }
protected ActionResult RemoveSite(ImportSitesModel model, Trip trip, int siteId) { var site = trip.FindSiteById(siteId); trip.RemoveSite(site); Repositories.Imports.Save(trip); Uow.Persist(); var siteModel = model.FindSiteById(site.Id); model.RemoveSite(siteModel); model.Initialize(); return(Request.IsAjaxRequest() ? PartialView("SitesPartial", model) : (ActionResult)View(model)); }
protected ActionResult AddSite(ImportSitesModel model, Trip trip) { var site = trip.AddSite(); trip.InitializeSites(); Repositories.Imports.Save(trip); Uow.Persist(); Mapper.Map(site, model.AddSite()); model.Initialize(); return(Request.IsAjaxRequest() ? (model.Sites.Count > 2 ? PartialView("SitePartial", model).AddViewData("siteId", site.Id) : PartialView("SitesPartial", model)) : View(model)); }
public virtual ActionResult Edit(AccountEditModel model) { if (model.EditingPassword) { if (!ModelState.IsValid) { return(View(Mapper.Map <User, AccountEditModel>(User))); } if (!User.VerifyPassword(model.Password.ExistingPassword)) { ModelState.AddModelError("Password.ExistingPassword", "Invalid password."); return(View(Mapper.Map <User, AccountEditModel>(User))); } User.ChangePasswordUsingExistingPassword(model.Password.ExistingPassword, model.Password.NewPassword); this.ValidateMappedModel <User, AccountEditModel>(User, ValidationTag.Required); if (!ModelState.IsValid) { return(View(Mapper.Map <User, AccountEditModel>(User))); } Uow.Persist(); TempData.SetAccountMessage("Your password has been changed"); return(Redirect(HttpContext.GetDefaultReturnUrl())); } if (model.EditingDetails) { if (!ModelState.IsValid) { return(View(model)); } Mapper.Map(model.Details, User); this.ValidateMappedModel <User, AccountEditModel>(User, ValidationTag.Required); if (!ModelState.IsValid) { return(View(model)); } Uow.Persist(); TempData.SetAccountMessage("Your account has been saved"); return(Redirect(HttpContext.GetDefaultReturnUrl())); } throw new NotImplementedException(); }
public virtual ActionResult History([ModelBinder(typeof(ImportInnerActionModel))] ImportInnerActionModel innerAction) { if (innerAction.Equals(ImportModelLevel.Trip, ImportModelAction.Remove)) { var trip = Repositories.Imports.FindById(innerAction.Id); if (!User.IsAuthorizedToEdit(trip)) { return(new UnauthorizedResult()); } Repositories.Imports.Remove(trip); Uow.Persist(); return(View(Mapper.Map <IList <Trip>, IList <ImportTripSummaryModel> >( Repositories.Imports.ListCreatedByUser(User.Id)))); } throw new NotImplementedException(); }
protected ActionResult RemoveTree(ImportTreesModel model, Trip trip, int treeId) { var tree = trip.FindTreeById(treeId); var site = tree.Site; tree.Site.RemoveTree(tree); Repositories.Imports.Save(trip); Uow.Persist(); var treeModel = model.FindTreeById(tree.Id); var siteModel = model.FindSiteById(site.Id); siteModel.RemoveTree(treeModel); model.Initialize(); return(Request.IsAjaxRequest() ? PartialView("SiteTreesPartial", model).AddViewData("siteId", site.Id) : View(model)); }
protected ActionResult AddTree(ImportTreesModel model, Trip trip, int siteId) { var site = trip.FindSiteById(siteId); var tree = site.AddSingleTrunkTree(); Repositories.Imports.Save(trip); Uow.Persist(); var siteModel = model.FindSiteById(site.Id); var treeModel = siteModel.AddTree(); Mapper.Map(tree, treeModel); model.Initialize(); return(Request.IsAjaxRequest() ? (site.Trees.Count > 2 ? PartialView("TreePartial", model).AddViewData("treeId", tree.Id) : PartialView("SiteTreesPartial", model).AddViewData("siteId", site.Id)) : View(model)); }
public virtual ActionResult Finish(int id) { var trip = Repositories.Imports.FindById(id); if (!User.IsAuthorizedToEdit(trip)) { return(new UnauthorizedResult()); } if (trip.IsImported) { Repositories.Imports.Reimport(trip); } else { Repositories.Imports.Import(trip); } Uow.Persist(); return(RedirectToAction(MVC.Import.History())); }
public virtual ActionResult Trip(ImportTripModel model) { Trip trip = model.Id == 0 ? Model.Imports.Trip.Create() : Repositories.Imports.FindById(model.Id); if (!User.IsAuthorizedToEdit(trip)) { return(new UnauthorizedResult()); } Mapper.Map(model, trip); trip.InitializeSites(); this.ValidateMappedModel <Trip, ImportTripModel>(trip, ValidationTag.Required); if (!ModelState.IsValid) { return(View(model)); } Repositories.Imports.Save(trip); Uow.Persist(); return(RedirectToAction(MVC.Import.Sites(trip.Id))); }
public virtual ActionResult PasswordAssistance(AccountPasswordAssistanceModel model) { if (!ModelState.IsValid) { return(View(model)); } var user = Repositories.Users.FindByEmail(model.Email); if (user != null) { user.GenerateForgottenPasswordAssistanceToken(); Repositories.Users.Save(user); Uow.Persist(); using (SmtpClient mailClient = new SmtpClient()) using (MailMessage mail = PasswordAssistanceEmail.Create(user, Url.Action("CompletePasswordAssistance", new { token = user.ForgottenPasswordAssistanceToken.UrlEncodedValue }))) { mailClient.Send(mail); } } model.AssistanceComplete = true; return(View(model)); }
protected ActionResult SaveTrees(ImportTreesModel model, Trip trip, bool saveUnlessOptionalErrors) { Mapper.Map(model, trip); trip.VisitTrees((p, t) => this.ValidateMappedModel <TreeBase, ImportTreeModel>(t, $"{p}.", ValidationTag.Required)); if (!ModelState.IsValid) { return(View(model)); } trip.VisitTrees((p, t) => this.ValidateMappedModel <TreeBase, ImportTreeModel>(t, $"{p}.", ValidationTag.Optional)); if (!ModelState.IsValid && saveUnlessOptionalErrors) { model.HasOptionalErrors = true; return(View(model)); } trip.Sites.SelectMany(s => s.Trees).Last().SetTripDefaults(); Repositories.Imports.Save(trip); Uow.Persist(); return(RedirectToAction(MVC.Import.Review(trip.Id))); }
public virtual ActionResult CompletePasswordAssistance(CompleteAccountPasswordAssistanceModel model, string token) { if (!string.IsNullOrEmpty(token)) { var user = Repositories.Users.FindByForgottenPasswordAssistanceToken(token); if (user != null && user.IsForgottenPasswordAssistanceTokenValid) { model.CanCompletePasswordAssistance = true; if (!ModelState.IsValid) { return(View(model)); } user.ChangePasswordUsingPasswordAssistanceToken(token, model.Password); this.ValidateMappedModel <User, AccountRegistrationModel>(user, ValidationTag.Required); if (!ModelState.IsValid) { return(View(model)); } Uow.Persist(); model.AssistanceComplete = true; } } return(View(model)); }
public virtual ActionResult Register(AccountRegistrationModel model) { if (!ModelState.IsValid) { return(View(model)); } var user = User.Create(model.Email, model.Password); this.ValidateMappedModel <User, AccountRegistrationModel>(user, ValidationTag.Required); if (!ModelState.IsValid) { return(View(model)); } var existingUser = Repositories.Users.FindByEmail(model.Email); if (existingUser != null) { if (existingUser.IsEmailVerified) { ModelState.AddModelError("Email", "You must choose a different email."); return(View(model)); } user = existingUser; user.ChangePasswordIfNonEmailVerified(model.Password); } Repositories.Users.Save(user); Uow.Persist(); using (SmtpClient mailClient = new SmtpClient()) using (MailMessage mail = EmailVerificationEmail.Create(user, Url.Action("CompleteRegistration", new { token = user.EmailVerificationToken.UrlEncodedValue }))) { mailClient.Send(mail); } model.RegistrationComplete = true; return(View(model)); }