public async Task <IHttpActionResult> Register([FromBody] RegisterEmployee model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var user = new ApplicationUser()
            {
                UserName = model.EmployeeId, Email = model.Email
            };

            IdentityResult result = await UserManager.CreateAsync(user, "123456789");

            if (!result.Succeeded)
            {
                return(GetErrorResult(result));
            }

            try
            {
                SaveUpdateActivities activity = new SaveUpdateActivities();
                LogicActivity        logic    = new LogicActivity();
                DataBind             da       = activity.SaveUpdateEmployee(new Employee
                {
                    EmployeeId    = model.EmployeeId,
                    EmployeeName  = model.EmployeeName,
                    DesignationId = model.DesignationId,
                    SectionId     = model.SectionId,
                    Email         = model.Email,
                    JoiningDate   = model.JoiningDate,
                    ReportTo      = model.ReportTo,
                    Location      = model.Location,
                    GroupName     = model.GroupId,
                    RoleId        = model.RoleId
                });

                UserManager.AddToRoles(user.Id, model.AccessPermission.ToArray());

                var beforData = logic.getEmployee(model.EmployeeId, model.AccessPermission.ToArray());

                var dataAfter = new { Info = beforData, AccessList = model.AccessPermission };

                string data = JsonConvert.SerializeObject(dataAfter);


                AuditTrialReport.SaveAuditReport(User.Identity.Name, "Insert", null, data);
            }
            catch (Exception ev)
            {
                return(BadRequest(ev.ToString()));
            }

            return(Ok("Successfully added Employee with default password"));
        }
        public IHttpActionResult GetUserPermissionList()
        {
            dbContext            db         = new dbContext();
            SaveUpdateActivities activities = new SaveUpdateActivities();

            var permissionList = db.AspNetUsers.Select(s => new
            {
                EmployeeId     = s.UserName,
                EmployeeName   = db.Employee.Where(p => p.EmployeeId == s.UserName).Select(o => o.EmployeeName).FirstOrDefault(),
                RoleInfo       = db.Employee.Where(k => k.EmployeeId == s.UserName).Select(j => j.Roles),
                PermissionName = s.AspNetRoles.Select(p => new {
                    Id             = p.Id,
                    PermissionName = p.Name
                }).ToList()
            }).ToList();

            return(Ok(permissionList));
        }
        public async Task <IHttpActionResult> AddPermissionRole([FromBody] RolePermissions roleName)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            SaveUpdateActivities activities = new SaveUpdateActivities();
            var RoleManager = new RoleManager <IdentityRole>(new RoleStore <IdentityRole>(new ApplicationDbContext()));

            var roleResult = await RoleManager.CreateAsync(new IdentityRole(roleName.RoleName));

            if (roleResult.Succeeded)
            {
                return(Ok("Successfully added Role Permission"));
            }

            return(BadRequest("Internal Server Error"));
        }
        public async Task <IHttpActionResult> UpdateUserRole([FromBody] UserRoles model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest("Provide Proper Information"));
            }

            SaveUpdateActivities activities = new SaveUpdateActivities();



            var user = UserManager.FindByName(model.EmployeeId);

            if (user == null)
            {
                return(BadRequest("The User is not registered"));
            }


            DataBind Roledata = activities.SaveUpdateUserRole(model);
            DataBind data     = new DataBind();

            string[] oldRoles = new List <string>(UserManager.GetRoles(user.Id)).ToArray();
            await UserManager.RemoveFromRolesAsync(user.Id, oldRoles);

            var data1 = new { EmployeeId = user.UserName, Role = Roledata.dataBefore, AccessList = oldRoles };

            data.dataBefore = JsonConvert.SerializeObject(data1);



            await UserManager.AddToRolesAsync(user.Id, model.PermissionName);

            var data2 = new { EmployeeId = user.UserName, Role = Roledata.dataAfter, AccessList = model.PermissionName };

            data.dataAfter = JsonConvert.SerializeObject(data2);

            AuditTrialReport.SaveAuditReport(User.Identity.Name, "Update", data.dataBefore, data.dataAfter);

            return(Ok("Successfully added user permission"));
        }