public IHttpActionResult GenMemberPhoneNumbers(String userId)
        {
            var id = Guid.Empty;

            if (Guid.TryParse(userId, out id))
            {
                using (var ctx = new RT2020Entities())
                {
                    var staff = ctx.Staff.Where(x => x.StaffId == id && x.Status > 0).SingleOrDefault();
                    if (staff != null)
                    {
                        BackgroundJob.Enqueue(() => SuperUserHelper.GenMemberPhoneNumbers(id));
                        //SuperUserHelper.GenMemberPhoneNumbers(id);

                        log.Info(String.Format("[bot, SuperUser, GenMemberPhoneNumbers] \r\nHangfire findished the Job\r\nUser = {0}", String.IsNullOrEmpty(staff.FullName) ? staff.StaffCode : staff.FullName));

                        return(StatusCode(HttpStatusCode.Accepted));     // 202 or use: return new StatusCodeResult(202);
                    }
                }
            }

            log.Info(String.Format("[bot, SuperUser, GenMemberPhoneNumbers] \r\nError found before submitting to Hangfire\r\nUser Id = {0}", userId));

            return(BadRequest());
        }
        public static LoginResponse Login(LoginRequest request)
        {
            request.mobile_number = Common.GetStandardMobileNumber(request.mobile_number);
            LoginResponse response     = new LoginResponse();
            SuperAdmin    superuser    = null;
            string        hashPassword = TokenGenerator.GetHashedPassword(request.password, 49);

            try
            {
                using (SuperUserDao dao = new SuperUserDao())
                {
                    superuser = dao.FindByMobileNumber(request.mobile_number);
                    if (superuser == null)
                    {
                        MakeNouserResponse(response);
                        return(response);
                    }
                    if (hashPassword == superuser.Password)
                    {
                        response.code         = 1;
                        response.has_resource = 0;
                        //admin. = request.app_id;
                        superuser.AppToken  = request.push_token;
                        superuser.AppID     = request.app_id;
                        superuser.LastLogin = DateTime.Now;
                        string authToken = TokenGenerator.GenerateToken(superuser.FullName, superuser.Password, request.mobile_number);
                        superuser.AccToken = authToken;
                        dao.Update(superuser);
                        response.code = 0;
                        SuperUserLoginDto dto = new SuperUserLoginDto();
                        SuperUserHelper.CopyFromEntity(dto, superuser);

                        SuperUserLoginDetailsDto dtoDetails = new SuperUserLoginDetailsDto();
                        SuperUserHelper.CopyFromEntity(dtoDetails, superuser);


                        response.user_login         = dto;
                        response.super_user_details = dtoDetails;
                        response.has_resource       = 1;
                        response.code    = 0;
                        response.message = MessagesSource.GetMessage("login.ok");
                        return(response);
                    }
                    else
                    {
                        response.code         = 1;
                        response.has_resource = 0;
                        response.message      = MessagesSource.GetMessage("login.fail");
                    }
                }
            }
            catch (Exception ex)
            {
                response.MakeExceptionResponse(ex);
            }
            return(response);
        }
        public IHttpActionResult GetCurrentUserLiteData()
        {
            try
            {
                UserLiteDTO  data   = new UserLiteDTO();
                List <Claim> claims = ClaimsPrincipal.Current.Claims.ToList();
                if (claims.Count < 1)
                {
                    return(Content(HttpStatusCode.Unauthorized, "Access is denied due to invalid credentials"));
                }
                data.UserName = claims.Where(x => x.Type == ClaimTypes.Email).FirstOrDefault().Value;
                data.Id       = Convert.ToInt32(claims.Where(x => x.Type == ClaimTypes.UserData).FirstOrDefault().Value);
                List <MenuAccessLiteParameters> list = new List <MenuAccessLiteParameters>();
                List <string> listAccess             = claims.Where(x => x.Type == ClaimTypes.Webpage).Select(y => y.Value).ToList();
                foreach (string access in listAccess)
                {
                    string[] acc = access.Split(new string[] { "$%" }, StringSplitOptions.None);
                    if (acc != null && acc.Count() == 2)
                    {
                        MenuAccessLiteParameters menu = new MenuAccessLiteParameters();
                        menu.ControllerName = acc[0];
                        menu.ActionName     = acc[1];
                        list.Add(menu);
                    }
                }

                IList <MenuAccessLiteWithChildDTO> resListAccess;

                resListAccess = _menuService.GetByListControllerAndActionMenu(list);

                if (resListAccess != null)
                {
                    var userRole = _userService.GetUserRole(data.Id);

                    if (userRole != null)
                    {
                        data.RoleName     = userRole.Role.Name;
                        data.EmployeeType = userRole.Role.EmployeeTypes;
                        if (userRole.Role.Name == "SuperAdmin")
                        {
                            data.MenuList = resListAccess.ToList();
                        }
                        else
                        {
                            var su = new SuperUserHelper();
                            data.MenuList = su.filterSuperAdminAccess(resListAccess).ToList();
                        }
                    }
                    else
                    {
                        data.MenuList = null;
                    }
                }

                return(Ok(data));
            }
            catch (Exception ex)
            {
                string errMessage = string.Empty;
                if (!string.IsNullOrWhiteSpace(ex.InnerException.Message))
                {
                    errMessage = ex.InnerException.Message;
                }
                else
                {
                    errMessage = ex.Message;
                }

                return(Content(HttpStatusCode.InternalServerError, errMessage));
            }
        }