public IHttpActionResult Save(Employee employee)
        {
            try
            {
                if (employee == null)
                {
                    return(BadRequest(ActionMessage.NullOrEmptyMessage));
                }
                if (string.IsNullOrEmpty(employee.EmployeeId) || string.IsNullOrEmpty(employee.EmployeeName) ||
                    employee.SectionId == Guid.Empty || string.IsNullOrEmpty(employee.ReportTo))
                {
                    return(BadRequest(ActionMessage.NullOrEmptyMessage));
                }
                if (employee.SectionId == null || employee.DesignationId == null)
                {
                    return(BadRequest("Section or Department can't be empty!"));
                }

                EmployeesActivities employees = new EmployeesActivities(new UnitOfWork());
                employees.CreatedBy = User.Identity.GetUserName();
                employees.Save(employee);
                return(Ok(ActionMessage.SaveMessage));
            }
            catch (Exception exception)
            {
                return(BadRequest(exception.Message));
            }
        }
        public async Task <IHttpActionResult> Register(RegisterBindingModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var user = new ApplicationUser()
            {
                UserName = model.EmployeeId, Email = model.Email, EmailConfirmed = true
            };

            string password = UniqueNumbers.GeneratePassword();

            try
            {
                IdentityResult result = await UserManager.CreateAsync(user, password);

                if (result.Succeeded)
                {
                    var res = await UserManager.AddToRoleAsync(user.Id, model.RoleName);

                    EmployeesActivities employees = new EmployeesActivities(new UnitOfWork());
                    employees.CreatedBy = User.Identity.GetUserName();

                    employees.Save(new Employee {
                        EmployeeId = model.EmployeeId, EmployeeName = model.EmployeeName, DesignationId = model.DesignationId, SectionId = model.SectionId, Location = model.Location, ReportTo = model.ReportTo, JoiningDate = model.JoiningDate, Email = model.Email, groups = model.groups
                    });
                }

                var reportTo = await UserManager.FindByNameAsync(model.ReportTo);

                if (reportTo?.Email != null)
                {
                    var url = "/#/othersObjectives?id=" + user.UserName;
                    await UserManager.SendEmailAsync(reportTo.Id, "Confirm Job Description", "Mr/s " + model.EmployeeName + " submit a job Description.Please Approve the job description. To view the Job description please click <a href=\"" + new Uri(url) + "\">here</a>");
                }
                return(Ok("The Employee Password is " + password + " and Role is " + UserManager.GetRoles(user.Id).SingleOrDefault()));
            }
            catch (Exception e)
            {
                return(BadRequest(e.Message));
            }
        }
        public async Task <IHttpActionResult> Register(RegisterBindingModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var user = new ApplicationUser()
            {
                UserName = model.EmployeeId, Email = model.Email, EmailConfirmed = true
            };

            string password = UniqueNumbers.GeneratePassword();

            try
            {
                IdentityResult result = await UserManager.CreateAsync(user, password);

                if (result.Succeeded)
                {
                    var res = await UserManager.AddToRoleAsync(user.Id, model.RoleName);

                    EmployeesActivities employees = new EmployeesActivities(new UnitOfWork());
                    employees.CreatedBy = User.Identity.GetUserName();

                    employees.Save(new Employee {
                        EmployeeId = model.EmployeeId, EmployeeName = model.EmployeeName, DesignationId = model.DesignationId, SectionId = model.SectionId, Location = model.Location, ReportTo = model.ReportTo, JoiningDate = model.JoiningDate, Email = model.Email, groups = model.groups
                    });
                }

                var employee = await UserManager.FindByNameAsync(model.EmployeeId);

                if (employee?.Email != null)
                {
                    var url = clientside + "/#/login";
                    await UserManager.SendEmailAsync(employee.Id, "Regisatration Confirmation", "Mr/s " + model.EmployeeName + "<br/> Your Registration is complete. Your password is: " + password + ". please click <a href=\"" + new Uri(url) + "\">here</a> to login");
                }
                return(Ok("The Employee Password is " + password + " and Role is " + UserManager.GetRoles(user.Id).SingleOrDefault()));
            }
            catch (Exception e)
            {
                return(BadRequest(e.Message));
            }
        }