public virtual ActionResult AddOwnerPlace(OwnerLocalisationModel model) { var context = ModelFactory.GetUnitOfWork(); var mRepo = ModelFactory.GetRepository<IMemberRepository>(context); var lRepo = ModelFactory.GetRepository<ILocalisationRepository>(context); if (ModelState.IsValid) { MemberMainData maindata = new MemberMainData(); maindata.FirstName = model.Firstname; maindata.LastName = model.Name; maindata.PhoneNumber = model.PhoneNumber; try { var loc = lRepo.Get(model.LocalisationId); if (loc == null) { throw new Exception(Worki.Resources.Models.Localisation.Localisation.LocalisationError); } if (loc.OwnerID != 1) { throw new Exception(Worki.Resources.Models.Localisation.Localisation.OwnerAllreadyExist); } int memberId; bool sendNewAccountMail = _MembershipService.TryCreateAccount(model.Email.ToString(), maindata, out memberId, false); if (memberId == 0) { throw new Exception("Utilisateur non crée"); } var member = mRepo.Get(memberId); member.MemberMainData.BOStatus = (int)eBOStatus.Done; Roles.AddUserToRole(member.Username, MiscHelpers.BackOfficeConstants.BackOfficeRole); loc.OwnerID = memberId; context.Commit(); if (sendNewAccountMail) { var urlHelper = new UrlHelper(ControllerContext.RequestContext); var activationLink = urlHelper.ActionAbsolute(MVC.Account.Activate(member.Email, member.EmailKey)); TagBuilder link = new TagBuilder("a"); link.MergeAttribute("href", activationLink); link.InnerHtml = activationLink; var ownerMailContent = string.Format(Worki.Resources.Email.Common.AdminOwnershipAndAccount, loc.Name, activationLink.ToString(), loc.GetDetailFullUrl(Url), model.Email, _MembershipService.GetPassword(model.Email, null)); var ownerMail = _EmailService.PrepareMessageFromDefault(new MailAddress(model.Email, model.Firstname), string.Format(Worki.Resources.Email.Common.OwnershipSubject, loc.Name), WebHelper.RenderEmailToString(model.Firstname, ownerMailContent)); _EmailService.Deliver(ownerMail); } else { var urlHelper = new UrlHelper(ControllerContext.RequestContext); var boLink = urlHelper.ActionAbsolute(MVC.Backoffice.Localisation.Index(loc.ID)); TagBuilder link = new TagBuilder("a"); link.MergeAttribute("href", boLink); link.InnerHtml = Worki.Resources.Views.Account.AccountString.OwnerSpace; var ownerMailContent = string.Format(Worki.Resources.Email.Common.AdminOwnership, loc.Name, boLink.ToString()); var ownerMail = _EmailService.PrepareMessageFromDefault(new MailAddress(model.Email, model.Firstname), string.Format(Worki.Resources.Email.Common.OwnershipSubject, loc.Name), WebHelper.RenderEmailToString(model.Firstname, ownerMailContent)); _EmailService.Deliver(ownerMail); } return RedirectToAction(MVC.Admin.Member.IndexOwner()); } catch (Exception ex) { _Logger.Error("", ex); ModelState.AddModelError("", ex.Message); context.Complete(); } } return View(model); }
public virtual ActionResult AddOwnerPlace() { var model = new OwnerLocalisationModel(); return View(model); }