public async Task <IHttpActionResult> InsertUserData(BusinessUserModels model)
        {
            var response = new DataResponse <EntityUsers>();

            if (model.RoleIds.Count == 0)
            {
                return(Ok <dynamic>(new { Status = HttpStatusCode.BadRequest, Model = "Plese select at least one role." }));
            }
            if (ModelState.IsValid)
            {
                if (model.Id > 0)
                {
                    var user = await UserManager.FindByIdAsync(model.Id);

                    if (user == null)
                    {
                        return(Ok <dynamic>(new { Status = HttpStatusCode.BadRequest }));
                    }

                    user.FirstName   = model.FirstName;
                    user.MiddleName  = model.MiddleName;
                    user.LastName    = model.LastName;
                    user.PhoneNumber = model.PhoneNumber;
                    user.Email       = model.Email;
                    var userUpdate = UserManager.Update(user);
                    if (!userUpdate.Succeeded)
                    {
                        user.ClearCache(user.UserName);
                        return(Ok <dynamic>(new { Status = HttpStatusCode.BadRequest, Model = userUpdate.Errors.First() }));
                    }
                    IdentityResult result = null;

                    IdentityResult removerole = await UserManager.RemoveFromRoleAsync(user.Id, string.Empty);

                    foreach (var roleId in model.RoleIds)
                    {
                        result = await UserManager.AddToRoleAsync(user.Id, roleId);
                    }
                    var entity = new EntityProfile
                    {
                        UserId          = user.Id,
                        WorkEmail       = model.WorkEmail,
                        HomePhone       = model.HomePhone,
                        AdditionalPhone = model.AdditionalPhone,
                        AddressLine1    = model.AddressLine1,
                        AddressLine2    = model.AddressLine2,
                        City            = model.City,
                        Zip             = model.Zip,
                        StateId         = model.StateId,
                        CreatedBy       = CurrentUserId,
                        UpdatedBy       = CurrentUserId,
                        Startdate       = string.IsNullOrEmpty(model.StartDate) ? (DateTime?)null : DateTime.ParseExact(model.StartDate, "MM-dd-yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None),
                        RoleIds         = model.RoleIds,
                        DepartmentIds   = model.DepartmentIds
                    };
                    response = new RepositoryUsers().UpdateUserProfile(entity);
                }
                else
                {
                    model.Password = model.ConfirmPassword = GeneralHelpers.GeneratePassword(3, 2, 2);
                    if (ModelState.IsValid)
                    {
                        var user = new GMUser {
                            FirstName = model.FirstName, MiddleName = model.MiddleName, LastName = model.LastName, PhoneNumber = model.PhoneNumber, UserName = model.Email, Email = model.Email, BusinessId = CurrentBusinessId, IsActive = true
                        };
                        var adminresult = await UserManager.CreateAsync(user, model.Password);

                        if (adminresult.Succeeded)
                        {
                            var entity = new EntityProfile
                            {
                                UserId          = user.Id,
                                WorkEmail       = model.WorkEmail,
                                HomePhone       = model.HomePhone,
                                AdditionalPhone = model.AdditionalPhone,
                                AddressLine1    = model.AddressLine1,
                                AddressLine2    = model.AddressLine2,
                                City            = model.City,
                                Zip             = model.Zip,
                                StateId         = model.StateId,
                                CreatedBy       = CurrentUserId,
                                UpdatedBy       = CurrentUserId,
                                Startdate       = string.IsNullOrEmpty(model.StartDate) ? (DateTime?)null : DateTime.ParseExact(model.StartDate, "MM-dd-yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None),
                                RoleIds         = model.RoleIds,
                                DepartmentIds   = model.DepartmentIds
                            };
                            response = new RepositoryUsers().insertUserProfile(entity);
                            if (model.RoleIds != null)
                            {
                                IdentityResult result = null;
                                foreach (var roleId in model.RoleIds)
                                {
                                    result = await UserManager.AddToRoleAsync(user.Id, roleId.ToString());
                                }
                            }
                            //var RootPath = System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath;
                            //var ReturnUrl = ConfigurationManager.AppSettings["BaseUrl"] + CurrentUser.RelativeUrl.Replace(" ", "-");
                            //var UserDepartments = string.Join("<br/>", response.Model.UserDepartments);
                            ////Email to user
                            //var mail = new GMEmail();
                            //string emailBody = TemplateManager.NewUser(RootPath, CurrentUser.FirstName, user.FirstName, CurrentUser.BusinessName, model.Email, model.Password, UserDepartments, ReturnUrl);
                            //mail.SendDynamicHTMLEmail(model.Email, "New user registration", emailBody, "", "");
                        }
                        else
                        {
                            return(Ok <dynamic>(new { Status = HttpStatusCode.BadRequest, Model = adminresult.Errors.First() }));
                        }
                    }
                }
                return(Ok <DataResponse>(response));
            }
            else
            {
                var errorList = ModelState.Where(a => a.Value.Errors.Any()).Select(s => new
                {
                    Key     = s.Key.Split('.').Last(),
                    Message = s.Value.Errors[0].ErrorMessage
                });
                return(Ok <dynamic>(new { Status = HttpStatusCode.BadRequest, Model = errorList }));
            }
        }
        public async Task <IHttpActionResult> InsertUserData(UserViewModel model)
        {
            var response = new DataResponse <EntityUsers>();

            try
            {
                if (model.RoleIds.Count == 0)
                {
                    return(Ok <dynamic>(new { Status = HttpStatusCode.BadRequest, Model = "Plese select at least one role." }));
                }

                model.Password = model.ConfirmPassword = GeneralHelpers.GeneratePassword(3, 2, 2);

                var user = new GMUser {
                    FirstName = model.FirstName, MiddleName = model.MiddleName, LastName = model.LastName, PhoneNumber = model.PhoneNumber, UserName = model.Email, Email = model.Email, BusinessId = CurrentBusinessId, IsActive = true
                };
                var adminresult = await UserManager.CreateAsync(user, model.Password);

                if (adminresult.Succeeded)
                {
                    var entity = new EntityProfile
                    {
                        UserId          = user.Id,
                        WorkEmail       = model.WorkEmail,
                        HomePhone       = model.HomePhone,
                        AdditionalPhone = model.AdditionalPhone,
                        AddressLine1    = model.AddressLine1,
                        AddressLine2    = model.AddressLine2,
                        City            = model.City,
                        Zip             = model.Zip,
                        StateId         = model.StateId,
                        CreatedBy       = CurrentUserId,
                        UpdatedBy       = CurrentUserId,
                        Startdate       = string.IsNullOrEmpty(model.StartDate) ? (DateTime?)null : DateTime.ParseExact(model.StartDate, "MM-dd-yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None),
                        DepartmentIds   = model.DepartmentIds
                    };

                    if (model.RoleIds != null)
                    {
                        IdentityResult result = null;
                        foreach (var roleId in model.RoleIds)
                        {
                            result = await UserManager.AddToRoleAsync(user.Id, roleId.ToString());
                        }
                    }
                    response = repository.insertUserProfile(entity);

                    if (model.RepGroupId > 0)
                    {
                        new RepositoryReps().Insert(new EBP.Business.Entity.Rep.EntityReps {
                            UserId = user.Id, RepGroupId = model.RepGroupId, CreatedBy = CurrentUserId
                        });
                    }

                    try
                    {
                        var RootPath  = System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath;
                        var ReturnUrl = ConfigurationManager.AppSettings["BaseUrl"] + CurrentUser.RelativeUrl.Replace(" ", "-");

                        string UserDepartments = string.Empty;
                        if (response.Model.UserDepartmentName != null && response.Model.UserDepartmentName.Count() > 0)
                        {
                            UserDepartments = string.Join("<br/>", response.Model.UserDepartmentName);
                        }
                        //Email to user
                        var    mail      = new GMEmail();
                        string emailBody = TemplateManager.NewUserCreate(RootPath, CurrentUser.BusinessName, user.UserName, model.Password, user.FirstName, UserDepartments, ReturnUrl);
                        mail.SendDynamicHTMLEmail(model.Email, "New user registration", emailBody, "", "");
                    }
                    catch (Exception ex)
                    {
                        ex.Log();
                    }
                }
                else
                {
                    return(Ok <dynamic>(new { Status = HttpStatusCode.BadRequest, Model = adminresult.Errors.First() }));
                }
                return(Ok <DataResponse>(response));
            }
            catch (Exception ex)
            {
                ex.Log();
            }

            return(Ok <DataResponse>(response));
        }
        public async Task <ActionResult> Create(BusinessModel model)
        {
            var userManager = System.Web.HttpContext.Current.GetOwinContext().GetUserManager <GMUserManager>();
            var roleManager = System.Web.HttpContext.Current.GetOwinContext().Get <GMRoleManager>();

            if (ModelState.IsValid)
            {
                if (db.BusinessMasters.Any(a => a.BusinessName.ToLower() == model.BusinessName.ToLower()))
                {
                    ModelState.AddModelError("Error", string.Format("{0} is already used.", model.BusinessName));
                    return(View(model));
                }

                model.Password = GeneralHelpers.GeneratePassword(3, 2, 2);
                var user = new GMUser
                {
                    FirstName   = model.FirstName,
                    MiddleName  = model.MiddleName,
                    LastName    = model.LastName,
                    PhoneNumber = model.PhoneNumber,
                    UserName    = model.Email,
                    Email       = model.Email,
                    IsActive    = true,
                };
                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    string ReturnUrl = ConfigurationManager.AppSettings["BaseUrl"];
                    ViewData.Model = new EmgenexBusinessPortal.Models.EmailModel.BusinessEmailModel
                    {
                        CurentUserName = CurrentUser.FirstName,
                        FirstName      = model.FirstName,
                        BusinessName   = model.BusinessName,
                        UserName       = model.Email,
                        Password       = model.Password,
                        ReturnUrl      = ReturnUrl + model.BusinessName.Replace(" ", "-")
                    };
                    var roleName = "BusinessAdmin";
                    var role     = roleManager.FindByName(roleName);
                    if (role == null)
                    {
                        db.Roles.Add(new Role {
                            Name = roleName, Description = roleName, IsActive = true, CreatedBy = CurrentUser.Id, CreatedOn = System.DateTime.UtcNow
                        });
                        db.SaveChanges();
                    }
                    await UserManager.AddToRolesAsync(user.Id, roleName);

                    var emailBody = RazorHelper.RenderRazorViewToString("~/Views/Shared/Email/AddNewBusiness.cshtml", this);
                    await UserManager.SendEmailAsync(user.Id, "New Business", emailBody);
                }
                else
                {
                    ModelState.AddModelError("", result.Errors.First());
                    return(View(model));
                }
                var Business = db.BusinessMasters.Add(new BusinessMaster
                {
                    BusinessName = model.BusinessName,
                    RelativeUrl  = model.BusinessName.ToLower().Replace(" ", "-"),
                    Description  = model.Description,
                    CreatedBy    = CurrentUser.Id,
                    CreatedOn    = System.DateTime.UtcNow,
                    IsActive     = true,
                    Status       = 1
                });
                if (db.SaveChanges() > 0)
                {
                    var userDetails = db.Users.FirstOrDefault(a => a.Id == user.Id);
                    userDetails.UserProfiles.Add(new UserProfile {
                        CreatedBy = CurrentUser.Id, CreatedOn = DateTime.UtcNow, UserId = userDetails.Id
                    });
                    userDetails.BusinessId = Business.Id;
                    db.SaveChanges();
                    //string rootPath = ConfigurationManager.AppSettings["FolderPath"];
                    string        rootPath = Server.MapPath("~/Assets");
                    string        path     = Path.Combine(rootPath, Business.Id.ToString());
                    DirectoryInfo dir      = new DirectoryInfo(path);
                    if (!dir.Exists)
                    {
                        dir.Create();
                    }
                }
                return(RedirectToAction("Index"));
            }

            return(View(model));
        }
Esempio n. 4
0
        public async Task <IHttpActionResult> CreateBusiness(BusinessMasterModel model)
        {
            var response = new DataResponse <EntityBusinessMaster>();

            var userManager = System.Web.HttpContext.Current.GetOwinContext().GetUserManager <GMUserManager>();
            var roleManager = System.Web.HttpContext.Current.GetOwinContext().Get <GMRoleManager>();

            if (ModelState.IsValid)
            {
                if (db.BusinessMasters.Any(a => a.BusinessName.ToLower() == model.BusinessName.ToLower()))
                {
                    var error = string.Format("{0} is already used.", model.BusinessName);
                    return(Ok <dynamic>(new { Status = HttpStatusCode.BadRequest, Model = error }));
                }

                model.Password = GeneralHelpers.GeneratePassword(3, 2, 2);
                var user = new GMUser
                {
                    FirstName   = model.FirstName,
                    MiddleName  = model.MiddleName,
                    LastName    = model.LastName,
                    PhoneNumber = model.PhoneNumber,
                    UserName    = model.Email,
                    Email       = model.Email,
                    IsActive    = true,
                };
                IdentityResult result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    var roleName = "BusinessAdmin";
                    var role     = roleManager.FindByName(roleName);
                    if (role == null)
                    {
                        db.Roles.Add(new Role {
                            Name = roleName, Description = roleName, IsActive = true, CreatedBy = 1, CreatedOn = System.DateTime.UtcNow
                        });
                        db.SaveChanges();
                    }
                    UserManager.AddToRolesAsync(user.Id, roleName);
                }
                else
                {
                    var error = string.Format("{0} is already used.", model.Email);
                    return(Ok <dynamic>(new { Status = HttpStatusCode.BadRequest, Model = error }));
                }

                var entityBusinessProfile = new EntityBusinessMaster();
                entityBusinessProfile.BusinessName = model.BusinessName;
                entityBusinessProfile.RelativeUrl  = model.BusinessName.ToLower().Replace(" ", "-");
                entityBusinessProfile.Description  = model.Description;
                entityBusinessProfile.CreatedBy    = 1;
                response = repository.Insert(entityBusinessProfile);

                if (response.Model.Id > 0)
                {
                    var userDetails = db.Users.FirstOrDefault(a => a.Id == user.Id);
                    userDetails.UserProfiles.Add(new UserProfile {
                        CreatedBy = 1, CreatedOn = DateTime.UtcNow, UserId = userDetails.Id
                    });
                    userDetails.BusinessId = response.Model.Id;
                    db.SaveChanges();

                    model.RootPath = System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath;
                    string ReturnUrl = ConfigurationManager.AppSettings["BaseUrl"];
                    ReturnUrl = ReturnUrl + model.BusinessName.Replace(" ", "-");
                    string RelativeUrl = model.BusinessName.ToLower().Replace(" ", "-");

                    string managerEmailBody = string.Empty;
                    var    mail             = new GMEmail();
                    managerEmailBody = TemplateManager.NewBusinessCreate(model.RootPath, model.BusinessName, user.UserName, model.Password, model.FirstName, ReturnUrl, response.Model.Id, RelativeUrl);
                    mail.SendDynamicHTMLEmail(model.Email, "New Business Created", managerEmailBody, CurrentUser.OtherEmails);

                    //string rootPath = ConfigurationManager.AppSettings["FolderPath"];
                    string        rootPath = HttpContext.Current.Server.MapPath("~/Assets");
                    string        path     = Path.Combine(rootPath, response.Model.Id.ToString());
                    DirectoryInfo dir      = new DirectoryInfo(path);
                    if (!dir.Exists)
                    {
                        dir.Create();
                    }
                }
            }

            return(Ok <DataResponse>(response));
        }