Пример #1
0
        public static Dictionary<string, string> Login(UserData data)
        {
            using (var db = WebApiApplication.GetDB())
            {
                var transaction = db.BeginTransaction();
                string AccessToken, UserID, ResultCode, Message = null;

                try
                {
                    var command = new SqlCommand();
                    command.Connection = db;
                    command.Transaction = transaction;
                    command.CommandText = @"USP_AuthLogin";
                    command.CommandType = CommandType.StoredProcedure;

                    command.Parameters.Add("@FacebookID", data.FacebookID);
                    command.Parameters.Add("@FacebookName", data.FacebookName);
                    command.Parameters.Add("@FacebookPhotoURL", data.FacebookPhotoURL);

                    command.Parameters.Add("@AccessToken", SqlDbType.VarChar, 500);
                    command.Parameters["@AccessToken"].Direction = ParameterDirection.Output;
                    command.Parameters.Add("@UserID", SqlDbType.BigInt);
                    command.Parameters["@UserID"].Direction = ParameterDirection.Output;
                    command.Parameters.Add("@ResultCode", SqlDbType.Int);
                    command.Parameters["@ResultCode"].Direction = ParameterDirection.Output;
                    command.Parameters.Add("@Message", SqlDbType.VarChar, 300);
                    command.Parameters["@Message"].Direction = ParameterDirection.Output;

                    command.ExecuteNonQuery();

                    AccessToken = command.Parameters["@AccessToken"].Value.ToString();
                    UserID = command.Parameters["@UserID"].Value.ToString();
                    ResultCode = command.Parameters["@ResultCode"].Value.ToString();
                    Message = command.Parameters["@Message"].Value.ToString();

                    transaction.Commit();

                    Dictionary<string, string> dict = new Dictionary<string, string>();
                    dict.Add("AccessToken", AccessToken);
                    dict.Add("UserID", UserID);
                    dict.Add("ResultCode", ResultCode);
                    dict.Add("Message", Message);

                    return dict;
                }
                catch (System.Exception ex)
                {
                    Console.Write(ex.Message);
                    transaction.Rollback();
                    throw ex;
                }
            }
        }
Пример #2
0
 // POST  /SignUp
 public Dictionary<string, string> Post(UserData User)
 {
     Dictionary<string, string> Json = AuthModel.Signup(User);
     return Json;
 }
Пример #3
0
        // 데이터베이스에서 EXEC USP_User_Login 을 호출하고 결과를 정리해서 콘트롤러에 넘겨줌
        public static LoginResult Login(UserData data)
        {
            // 데이터베이스 커넥션을 가져옴
            using (var db = DB.GetDB())
            {
                // 트랜즈액션을 시작합니다.
                var transaction = db.BeginTransaction();

                // 반환할 결과 객체를 생성해 놓습니다.
                LoginResult result = new LoginResult();

                try
                {
                    // 스토어드 프로시져를 실행시키기 위해 명령을 준비합니다.
                    var command = new SqlCommand();
                    command.Connection = db;
                    command.Transaction = transaction;
                    command.CommandText = @"USP_User_Login";
                    command.CommandType = CommandType.StoredProcedure;

                    // 스토어드 프로시져에 전달할 파라미터를 정합니다.
                    command.Parameters.Add("@FacebookID", data.FacebookID);
                    command.Parameters.Add("@FacebookName", data.FacebookName);
                    command.Parameters.Add("@FacebookPhotoURL", data.FacebookPhotoURL);

                    command.Parameters.Add("@AccessToken", SqlDbType.VarChar, 500);
                    command.Parameters["@AccessToken"].Direction = ParameterDirection.Output;
                    command.Parameters.Add("@UserID", SqlDbType.BigInt);
                    command.Parameters["@UserID"].Direction = ParameterDirection.Output;
                    command.Parameters.Add("@ResultCode", SqlDbType.Int);
                    command.Parameters["@ResultCode"].Direction = ParameterDirection.Output;
                    command.Parameters.Add("@Message", SqlDbType.VarChar, 300);
                    command.Parameters["@Message"].Direction = ParameterDirection.Output;

                    // 스토어드 프로시져를 실행시킵니다.
                    command.ExecuteNonQuery();

                    // 스토어드 프로시져로부터 반환된 결과를 정리합니다.
                    data.AccessToken = command.Parameters["@AccessToken"].Value.ToString();
                    data.UserID = (Int64)command.Parameters["@UserID"].Value;

                    // 반환할 데이터에 AccessToken과 UserID를 넣기 위해 UserData에 입력합니다.
                    result.Data = data;

                    // 스토어드 프로시져가 잘 실행됬는 지 확인할 수 있는 ResultCode와 Message를 반환 데이터에 명시합니다.
                    result.ResultCode = (int)command.Parameters["@ResultCode"].Value;
                    result.Message = command.Parameters["@Message"].Value.ToString();

                    // 트랜즈액션을 커밋합니다.
                    transaction.Commit();

                    return result;
                }
                catch (System.Exception ex)
                {
                    // 에러가 발생하면 트랜즈액션을 롤백합니다.
                    transaction.Rollback();
                    throw ex;
                }
            }
        }
Пример #4
0
 /*
 URL     : /Login
 Method  : POST
 Body    :
 {
     "FacebookID":"12323",
     "FacebookName":"Chris",
     "FacebookPhotoURL":"http://www.google.com"
 }
 내용     : 페이스북 정보를 활용해서 게임 서버에 로그인하는 API
 */
 public LoginResult Post(UserData User)
 {
     LoginResult result = LoginModel.Login(User);
     return result;
 }
Пример #5
0
        // 데이터베이스에서 EXEC USP_User_Login 을 호출하고 결과를 정리해서 콘트롤러에 넘겨줌
        public static UserResult Select(Int64 UserID)
        {
            // 데이터베이스 커넥션을 가져옴
            using (var db = DB.GetDB())
            {
                // 트랜즈액션을 시작합니다.
                //var transaction = db.BeginTransaction();

                // 반환할 결과 객체를 생성해 놓습니다.
                UserResult result = new UserResult();

                try
                {
                    // 스토어드 프로시져를 실행시키기 위해 명령을 준비합니다.
                    var command = new SqlCommand();
                    command.Connection = db;
                    //command.Transaction = transaction;
                    command.CommandText = @"USP_User_Select";
                    command.CommandType = CommandType.StoredProcedure;

                    // 스토어드 프로시져에 전달할 파라미터를 정합니다.
                    command.Parameters.Add("@UserID", UserID);

                    command.Parameters.Add("@ResultCode", SqlDbType.Int);
                    command.Parameters["@ResultCode"].Direction = ParameterDirection.Output;
                    command.Parameters.Add("@Message", SqlDbType.VarChar, 300);
                    command.Parameters["@Message"].Direction = ParameterDirection.Output;

                    // 스토어드 프로시져를 실행시킵니다.
                    var reader = command.ExecuteReader();

                    UserData data = new UserData();

                    // 스토어드 프로시져로부터 반환된 결과를 정리합니다.
                    if (reader.Read())
                    {
                        data.UserID = (Int64)reader["UserID"];
                        data.FacebookID = reader["FacebookID"].ToString();
                        data.FacebookName = reader["FacebookName"].ToString();
                        data.FacebookPhotoURL = reader["FacebookPhotoURL"].ToString();
                        data.Point = (int)reader["Point"];
                        data.Diamond = (int)reader["Diamond"];

                        data.Level = (int)reader["Level"];
                        data.Experience = (int)reader["Experience"];
                        data.ExpAfterLastLevel = (int)reader["ExpAfterLastLevel"];
                        data.ExpForNextLevel = (int)reader["ExpForNextLevel"];

                        data.Damage = (int)reader["Damage"];
                        data.Health = (int)reader["Health"];
                        data.Speed = (int)reader["Speed"];
                        data.Defense = (int)reader["Defense"];

                        data.DamageLevel = (int)reader["DamageLevel"];
                        data.HealthLevel = (int)reader["HealthLevel"];
                        data.SpeedLevel = (int)reader["SpeedLevel"];
                        data.DefenseLevel = (int)reader["DefenseLevel"];

                    }

                    result.Data = data;

                    reader.Close();

                    // 스토어드 프로시져가 잘 실행됬는 지 확인할 수 있는 ResultCode와 Message를 반환 데이터에 명시합니다.
                    result.ResultCode = (int)command.Parameters["@ResultCode"].Value;
                    result.Message = command.Parameters["@Message"].Value.ToString();

                    // 트랜즈액션을 커밋합니다.
                    //transaction.Commit();

                    return result;
                }
                catch (System.Exception ex)
                {
                    // 에러가 발생하면 트랜즈액션을 롤백합니다.
                    //transaction.Rollback();
                    throw ex;
                }
            }
        }