Beispiel #1
0
        public bool UpdateEmpProfile(Model.APFamily.RegisLoginHistory data)
        {
            using (IDbConnection conn = MobileConnection)
            {
                try
                {
                    conn.Open();
                    var tran   = conn.BeginTransaction(IsolationLevel.ReadUncommitted);
                    var result = conn.Update(data, tran);
                    tran.Commit();

                    return(true);
                }
                catch (Exception ex)
                {
                    throw new Exception("MasterRepository.InsertEmpProfile() :: Error ", ex);
                }
            }
        }
        public async Task <object> PostLogin([FromBody] LoginData data)
        {
            try
            {
                var userName = data.UserName;
                var password = data.Password;
                var appCode  = data.AppCode;

                string APApiKey = Environment.GetEnvironmentVariable("API_Key");
                if (APApiKey == null)
                {
                    APApiKey = UtilsProvider.AppSetting.ApiKey;
                }

                if (data.UserLoginImage != null) // ถ่ายรูป
                {
                    var client  = new HttpClient();
                    var Content = new StringContent(JsonConvert.SerializeObject(data));
                    Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                    Content.Headers.Add("api_key", APApiKey);
                    string PostURL = Environment.GetEnvironmentVariable("AuthenticationURL");
                    if (PostURL == null)
                    {
                        PostURL = UtilsProvider.AppSetting.AuthorizeURL;
                    }
                    var Respond = await client.PostAsync(PostURL, Content);

                    if (Respond.StatusCode != System.Net.HttpStatusCode.OK)
                    {
                        return(new
                        {
                            success = false,
                            data = new AutorizeDataJWT(),
                            Message = "Authentication Fail"
                        });
                    }
                    var RespondData = await Respond.Content.ReadAsStringAsync();

                    AutorizeDataJWT Result = JsonConvert.DeserializeObject <AutorizeDataJWT>(RespondData);
                    if (Result.LoginResult == false)
                    {
                        return(new
                        {
                            success = false,
                            data = new AutorizeDataJWT(),
                            Message = Result.LoginResultMessage
                        });
                    }

                    AutorizeDataJWTReturnObject Return = new AutorizeDataJWTReturnObject();
                    Return.AccountExpirationDate  = Result.AccountExpirationDate;
                    Return.AppUserRole            = Result.AppUserRole;
                    Return.AuthenticationProvider = Result.AuthenticationProvider;
                    Return.CostCenterCode         = Result.CostCenterCode;
                    Return.CostCenterName         = Result.CostCenterName;
                    Return.DisplayName            = Result.DisplayName;
                    Return.Division           = Result.Division;
                    Return.DomainUserName     = Result.DomainUserName;
                    Return.Email              = Result.Email;
                    Return.EmployeeID         = Result.EmployeeID;
                    Return.FirstName          = Result.FirstName;
                    Return.LastLogon          = Result.LastLogon;
                    Return.LastName           = Result.LastName;
                    Return.LoginResult        = Result.LoginResult;
                    Return.LoginResultMessage = Result.LoginResultMessage;
                    Return.SysAppCode         = Result.SysAppCode;
                    Return.SysUserData        = JsonConvert.DeserializeObject <UserModel>(Result.SysUserData);
                    Return.SysUserId          = Result.SysUserId;
                    Return.SysUserRoles       = JsonConvert.DeserializeObject <vwUserRole>(Result.SysUserRoles);
                    Return.Token              = Result.Token;
                    Return.UserApp            = JsonConvert.DeserializeObject <List <vwUserApp> >(Result.UserApp);
                    Return.UserPrincipalName  = Result.UserPrincipalName;

                    Model.APFamily.RegisLoginHistory empProfile = _UserRepository.GetEmpProfile(Result.EmployeeID);
                    if (empProfile == null)
                    {
                        Model.APFamily.RegisLoginHistory emp = new Model.APFamily.RegisLoginHistory();
                        emp.EmpCode       = Result.EmployeeID;
                        emp.EmpDeviceID   = data.DeviceID;
                        emp.EmpName       = Result.FirstName;
                        emp.EmpLastName   = Result.LastName;
                        emp.PositionName  = Result.Division;
                        emp.Email         = Result.Email;
                        emp.EmpLoginToken = generateToken(data.DeviceID);

                        bool InsertEmpData = _UserRepository.InsertEmpProfile(emp);

                        return(new
                        {
                            success = true,
                            data = emp,
                            Token = emp.EmpLoginToken,
                            Message = "LogIn Success!"
                        });
                    }
                    else
                    {
                        if (data.DeviceID == empProfile.EmpDeviceID)
                        {
                            DateTime ExtainToken = Convert.ToDateTime(empProfile).AddDays(15);
                            empProfile.EmpTokenExpire = ExtainToken;

                            bool updateProfile = _UserRepository.UpdateEmpProfile(empProfile);
                            return(new
                            {
                                success = true,
                                data = empProfile,
                                Token = empProfile.EmpLoginToken,
                                Message = "LogIn Success!"
                            });
                        }
                        else
                        {
                            return(new
                            {
                                success = false,
                                data = empProfile = new Model.APFamily.RegisLoginHistory(),
                                Token = "",
                                Message = "You Have Change you Device! Please Contact IT Admin for further Use!"
                            });
                        }
                    }
                }
                else
                {
                    var client  = new HttpClient();
                    var Content = new StringContent(JsonConvert.SerializeObject(data));
                    Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                    Content.Headers.Add("api_key", APApiKey);
                    string PostURL = Environment.GetEnvironmentVariable("AuthenticationURL");
                    if (PostURL == null)
                    {
                        PostURL = UtilsProvider.AppSetting.AuthorizeURL;
                    }
                    var Respond = await client.PostAsync(PostURL, Content);

                    if (Respond.StatusCode != System.Net.HttpStatusCode.OK)
                    {
                        return(new
                        {
                            success = false,
                            data = new AutorizeDataJWT(),
                            Message = "Authentication Fail"
                        });
                    }
                    var RespondData = await Respond.Content.ReadAsStringAsync();

                    AutorizeDataJWT Result = JsonConvert.DeserializeObject <AutorizeDataJWT>(RespondData);
                    if (Result.LoginResult == false)
                    {
                        return(new
                        {
                            success = false,
                            data = new AutorizeDataJWT(),
                            Message = Result.LoginResultMessage
                        });
                    }

                    AutorizeDataJWTReturnObject Return = new AutorizeDataJWTReturnObject();
                    Return.AccountExpirationDate  = Result.AccountExpirationDate;
                    Return.AppUserRole            = Result.AppUserRole;
                    Return.AuthenticationProvider = Result.AuthenticationProvider;
                    Return.CostCenterCode         = Result.CostCenterCode;
                    Return.CostCenterName         = Result.CostCenterName;
                    Return.DisplayName            = Result.DisplayName;
                    Return.Division           = Result.Division;
                    Return.DomainUserName     = Result.DomainUserName;
                    Return.Email              = Result.Email;
                    Return.EmployeeID         = Result.EmployeeID;
                    Return.FirstName          = Result.FirstName;
                    Return.LastLogon          = Result.LastLogon;
                    Return.LastName           = Result.LastName;
                    Return.LoginResult        = Result.LoginResult;
                    Return.LoginResultMessage = Result.LoginResultMessage;
                    Return.SysAppCode         = Result.SysAppCode;
                    Return.SysUserData        = JsonConvert.DeserializeObject <UserModel>(Result.SysUserData);
                    Return.SysUserId          = Result.SysUserId;
                    Return.SysUserRoles       = JsonConvert.DeserializeObject <vwUserRole>(Result.SysUserRoles);
                    Return.Token              = Result.Token;
                    Return.UserApp            = JsonConvert.DeserializeObject <List <vwUserApp> >(Result.UserApp);
                    Return.UserPrincipalName  = Result.UserPrincipalName;

                    Model.APFamily.RegisLoginHistory empProfile = _UserRepository.GetEmpProfile(Result.EmployeeID);
                    if (empProfile == null)
                    {
                        Model.APFamily.RegisLoginHistory emp = new Model.APFamily.RegisLoginHistory();
                        emp.EmpCode       = Result.EmployeeID;
                        emp.EmpDeviceID   = data.DeviceID;
                        emp.EmpName       = Result.FirstName;
                        emp.EmpLastName   = Result.LastName;
                        emp.PositionName  = Result.Division;
                        emp.Email         = Result.Email;
                        emp.EmpLoginToken = generateToken(data.DeviceID);

                        bool InsertEmpData = _UserRepository.InsertEmpProfile(emp);

                        return(new
                        {
                            success = true,
                            data = emp,
                            Token = emp.EmpLoginToken,
                            Message = "LogIn Success!"
                        });
                    }
                    else
                    {
                        if (data.DeviceID == empProfile.EmpDeviceID)
                        {
                            DateTime ExtainToken = Convert.ToDateTime(empProfile).AddDays(15);
                            empProfile.EmpTokenExpire = ExtainToken;

                            bool updateProfile = _UserRepository.UpdateEmpProfile(empProfile);
                            return(new
                            {
                                success = true,
                                data = empProfile,
                                Token = empProfile.EmpLoginToken,
                                Message = "LogIn Success!"
                            });
                        }
                        else
                        {
                            return(new
                            {
                                success = false,
                                data = empProfile = new Model.APFamily.RegisLoginHistory(),
                                Token = "",
                                Message = "You Have Change you Device! Please Contact IT Admin for further Use!"
                            });
                        }
                    }
                } //ไม่ถ่ายรูป
                return(new
                {
                    success = false,
                    data = new AutorizeDataJWT(),
                    Message = "Authentication Fail"
                });
            }
            catch (Exception ex)
            {
                return(StatusCode(500, "Internal server error :: " + ex.Message));
            }
        }