Example #1
0
        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);
        }
Example #2
0
 public virtual ActionResult AddOwnerPlace()
 {
     var model = new OwnerLocalisationModel();
     return View(model);
 }