public ActionResult Edit(OrganisationEditModel editModel)
        {
            try
            {
                sw.Organisation organisation = editModel.org;
                if (ModelState.IsValid)
                {
                    if (String.IsNullOrEmpty(organisation.RegNumber))
                    {
                        var applNoResp = generateEmployerNumber(organisation.Name, organisation.CommencementDate ?? DateTime.Now);
                        if (applNoResp.Key == true)
                        {
                            organisation.RegNumber = applNoResp.Value;
                        }
                    }


                    organisation.ModifiedBy   = User.Identity.Name;
                    organisation.ModifiedDate = DateTime.Now;
                    swdb.Organisation.Attach(organisation);
                    swdb.Entry(organisation).State = EntityState.Modified;
                    // swdb.ObjectStateManager.ChangeObjectState(organisation, EntityState.Modified);
                    swdb.SaveChanges();



                    if (membershipService.GetUser(organisation.RegNumber) == null)
                    {
                        MembershipUser newUser;
                        //MembershipCreateStatus status;
                        newUser = membershipService.CreateUser(organisation.RegNumber, organisation.RegNumber, organisation.ContactEmailAddress);

                        roleService.AddUserToRole(organisation.RegNumber, "Organisation Admin");

                        sw.Users user = swdb.Users.Where(x => x.UserName == organisation.RegNumber).FirstOrDefault();
                        organisation.Users.Add(user);
                        swdb.SaveChanges();
                    }


                    //int[] acnts = editModel.SelectedAcountTypes;

                    //if (acnts != null)
                    //{
                    //    foreach (int account in acnts)
                    //    {
                    //        OrganisationPortfolio orgPort = db.OrganisationPortfolio.Where(x => x.OrgID == organisation.Id && x.AccountTypeID == account).FirstOrDefault();
                    //        if (orgPort == null)
                    //        {
                    //            OrganisationPortfolio detail = new OrganisationPortfolio();
                    //            detail.AccountTypeID = account;
                    //            detail.OrgID = organisation.Id;
                    //            detail.AccountState = 1;
                    //            detail.LastPayment = DateTime.Now;
                    //            detail.ModifiedBy = User.Identity.Name;
                    //            detail.ModifiedDate = DateTime.Now;
                    //            detail.TotalPayments = 0;
                    //            detail.TotalOverPaid = 0;
                    //            detail.TotalPenalty = 0;
                    //            db.OrganisationPortfolio.AddObject(detail);
                    //            db.SaveChanges();
                    //        }
                    //    }
                    //}



                    TempData["message"] = "<b>" + organisation.Name + "</b> was Successfully Updated";
                    return(RedirectToAction("Index"));
                }
                editModel.orgTypes = new SelectList(swdb.OrganisationType, "Id", "Name", organisation.OrganisationTypeId).ToList();
                //editModel.OfficeBranch = new SelectList(db.OfficeBranch, "Id", "BranchName", organisation.BranchID).ToList();
                //editModel.accountTypes = db.AccountType.ToList();
                //editModel.SelectedAcountTypes = db.OrganisationPortfolio.Where(x => x.OrgID == organisation.Id).Select(x => x.AccountTypeID ?? 0).ToArray();

                return(View(editModel));
            }
            catch (Exception ex)
            {
                // Log with Elmah
                Elmah.ErrorSignal.FromCurrentContext().Raise(ex);
                TempData["message"] = Settings.Default.GenericExceptionMessage;
                return(RedirectToAction("Index", "Home", new { area = "Admin" }));
            }
        }
示例#2
0
        public virtual ActionResult CreateUser(RegisterViewModel model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    sw.Organisation organisation = new sw.Organisation();
                    //var password = Membership.GeneratePassword(8, 0);
                    // model.Password = password;
                    //model.ConfirmPassword = password;
                    string                 message = "Welcome <br><br>Find below your account details<br><br>Username: "******" <br>Password: "******"New Account Details";
                    MembershipUser         newUser;
                    MembershipCreateStatus status;
                    newUser = membershipService.CreateUser(model.UserName, model.Password, model.Email, model.SecretQuestion, model.SecretAnswer, model.Approve, out status);

                    if (newUser == null)
                    {
                        var msg = GetErrorMessage(status);
                        TempData["message"] = "alert-danger";
                        TempData["message"] = msg;
                        return(RedirectToAction("Index"));
                    }
                    else
                    {
                        if (System.Web.Security.Roles.IsUserInRole(Settings.Default.OrganisationAdminRole) && !System.Web.Security.Roles.IsUserInRole("Administrator"))
                        {
                            GetOrganisation objGetOrganisation = new GetOrganisation();
                            MembershipUser  user = Membership.GetUser(User.Identity.Name);
                            organisation = objGetOrganisation.byUser(user);
                            if (organisation == null)
                            {
                                throw new Exception("Could not find Organisation");
                            }
                            model.Id = organisation.Id;
                        }
                        if (model.Id != 0)
                        {
                            organisation = (from o in swdb.Organisation where o.Id == model.Id select o).FirstOrDefault();
                            if (organisation == null)
                            {
                                throw new Exception("Could not find Organisation");
                            }
                            model.objOrganisation = organisation;
                            sw.Users user = swdb.Users.Where(x => x.UserId == (Guid)newUser.ProviderUserKey).FirstOrDefault();
                            organisation.Users.Add(user);
                            swdb.SaveChanges();

                            ///Send Email to New User Account////
                            // @utility.SendEmailToPerson(Settings.Default.EmailReplyTo, newUser.Email, subject, message, DateTime.Now, null, null, null);
                            return(RedirectToAction("GrantRolesToUser", new { username = newUser.UserName, Id = model.Id }));
                        }
                        ///Send Email to New User Account////
                        // @utility.SendEmailToPerson(Settings.Default.EmailReplyTo, newUser.Email, subject, message, DateTime.Now, null, null, null);
                        return(routeHelpers.Actions.GrantRolesToUser(newUser.UserName));
                        //RedirectToAction("GrantRolesToUser",new{UserName = '', Id = ''})
                    }
                }
            }
            catch (Exception ex)
            {
                //Elmah.ErrorSignal.FromCurrentContext().Raise(ex);
                TempData["message"] = Settings.Default.GenericExceptionMessage;
                return(RedirectToAction("Index", "Home", new { area = "Admin" }));
            }
            return(View());
        }