Пример #1
0
 /*
  * 引数 accountName:ユーザネーム
  * 返値 return:ユーザ情報JSON(ユーザID & ユーザネーム) out:HTTPのステータスコード
  * ログインをする際に呼び出される
  * 該当する名前が見つからない場合は失敗として返す
  * 見つかった場合はユーザネームとそれに紐づいているユーザIDを一緒にして返す
  */
 public static JObject AccountRefer(string accountName, out int statusCode)
 {
     try
     {
         using (var db = new KyomuDbContext())
         {
             foreach (var members in db.Users)
             {
                 if (accountName.Equals(members.name))
                 {
                     statusCode = 200;
                     return(Util.UserToJobj(members));
                 }
             }
             //ログインしたいaccountNameがデータベース上に存在しない場合
             statusCode = 409;
             return(ServerMain.messagejson("アカウントが見つかりませんでした"));
         }
     }
     catch (Exception e)
     {
         Console.WriteLine(e.Message);
         statusCode = 500;
         return(ServerMain.messagejson("データベースで異常が発生しました"));
     }
 }
Пример #2
0
 /*
  * 引数 accountID:ユーザID fusenID:付箋ID
  * 返値 return:削除された付箋のJSON out:HTTPのステータスコード
  * クライアントで削除された付箋の情報を受け取り、DB内から該当する付箋を検索し該当するデータを削除
  * 更新結果は確認のため返される
  */
 public static JObject DeleteFusen(string accountID, string fusenID, out int statusCode)
 {
     try
     {
         JObject jobj = new JObject();
         using (var db = new KyomuDbContext())
         {
             try
             {
                 var target = db.Fusens.Single(x => x.fusenID == fusenID);
                 jobj = Util.FusenToJobj(target);
                 db.Remove(target);
                 db.SaveChanges();
                 statusCode = 200;
                 return(jobj);
             }
             catch (Exception)
             {
                 jobj.Add("message", new JValue("指定された付箋が存在しません"));
                 statusCode = 409;
                 return(jobj);
             }
         }
     }
     catch (Exception e)
     {
         Console.WriteLine(e.Message);
         statusCode = 500;
         return(ServerMain.messagejson("データベースで異常が発生しました"));
     }
 }
Пример #3
0
 /*
  * 引数 付箋JSON
  * 返値 return:更新された付箋のJSON out:HTTPのステータスコード
  * クライアントで変更された付箋の情報を受け取り、DB内から該当する付箋を検索し更新
  * 更新結果は確認のため返される
  */
 public static JObject UpdateFusen(JObject fusenData, out int statusCode)
 {
     try
     {
         using (var db = new KyomuDbContext())
         {
             JObject jobj = new JObject();
             try
             {
                 var target = db.Fusens.Single(x => x.fusenID == fusenData["fusenID"].Value <string>());
                 target.title = fusenData["title"].Value <string>();
                 target.tag   = fusenData["tag"].ToObject <string[]>();
                 target.text  = fusenData["text"].Value <string>();
                 target.color = fusenData["color"].Value <string>();
                 statusCode   = 200;
                 db.SaveChanges();
                 return(fusenData);
             }
             catch (Exception)
             {
                 jobj.Add("message", new JValue("指定の付箋が見つかりません"));
                 statusCode = 409;
                 return(jobj);
             }
         }
     }catch (Exception e)
     {
         Console.WriteLine(e.Message);
         statusCode = 500;
         return(ServerMain.messagejson("データベースで異常が発生しました"));
     }
 }
Пример #4
0
        /*
         * 引数 accountID:ユーザID
         * 返値 return:作成された付箋のJSON out:HTTPのステータスコード
         * クライアント側から付箋作成要求が出されたときに呼ばれる
         * 空の付箋を生成、そのfusenIDを設定して、DBに保存、JSONにして送信
         */
        public static JObject CreateFusen(string accountID, out int statusCode)
        {
            //DBに接続してアカウントID,付箋IDを持つ行を追加
            //成功したらそのまま返す/失敗したらJObjectに入れて返す
            //fusenidが一意になるように
            try
            {
                JObject jobj = new JObject();
                using (var db = new KyomuDbContext())
                {
                    //accountがあるかの関数
                    if (!sAccount.accountIDExist(accountID))
                    {
                        statusCode = 404;
                        return(ServerMain.messagejson("存在しないアカウントIDです"));
                    }
                    //fusenidの発行をする)
                    string FusenID;
                    bool   same = false;
                    do
                    {
                        same    = false;
                        FusenID = Guid.NewGuid().ToString("N").Substring(0, 20);
                        foreach (var fusen in db.Fusens)
                        {
                            if (fusen.fusenID.Equals(FusenID))
                            {
                                same = true;
                            }
                        }
                    } while (same);

                    var newfusen = new Models.Fusen
                    {
                        userID  = accountID,
                        fusenID = FusenID,
                        title   = "",
                        tag     = new string[] { "" },
                        text    = "",
                        color   = ""
                    };
                    jobj = Util.FusenToJobj(newfusen);
                    db.Fusens.Add(newfusen);
                    db.SaveChanges();
                    statusCode = 200;
                }
                return(jobj);
            }catch (Exception e)
            {
                Console.WriteLine(e.Message);
                statusCode = 500;
                return(ServerMain.messagejson("データベースで異常が発生しました"));
            }
        }
Пример #5
0
 /*
  * 引数 accountName:ユーザネーム
  * 返値 return:ユーザ情報JSON(ユーザID & ユーザネーム) out:HTTPのステータスコード
  * 新しくアカウントを作成するときに呼び出される
  * 既に使われている名前や、使用不可に設定している名前の場合は失敗として返す
  * そうでない場合はユーザIDを生成し名前と一緒にして返す
  */
 public static JObject AccountCreate(string accountName, out int statusCode)
 {
     try
     {
         using (var db = new KyomuDbContext())
         {
             if (Array.Exists(NgList, str => str == accountName) || !Regex.IsMatch(accountName, NameRX))
             {
                 statusCode = 403;
                 return(ServerMain.messagejson("このアカウント名は使用不能です"));
             }
             foreach (var members in db.Users)
             {
                 //入力されたNameが既にデータベースにある場合
                 if (accountName.Equals(members.name))
                 {
                     statusCode = 409;
                     return(ServerMain.messagejson("このアカウント名は既に使われています"));
                 }
             }
             //入力されたNameがデータベースにない場合
             byte[]        data   = Encoding.UTF8.GetBytes(accountName);
             var           bs     = new System.Security.Cryptography.MD5CryptoServiceProvider().ComputeHash(data);
             StringBuilder result = new StringBuilder();
             foreach (byte b in bs)
             {
                 result.Append(b.ToString("x2"));
             }
             var newMember = new User {
                 name = accountName, id = result.ToString()
             };
             //データベースに登録
             db.Users.Add(newMember);
             db.SaveChanges();
             statusCode = 200;
             return(Util.UserToJobj(newMember));
         }
     }
     catch (Exception e)
     {
         Console.WriteLine(e.Message);
         statusCode = 500;
         return(ServerMain.messagejson("データベースで異常が発生しました"));
     }
 }
Пример #6
0
 /*
  * 引数 accountID:ユーザID
  * 返値 アカウントの存在有無
  * アカウントが存在するかどうかを返す
  */
 public static bool accountIDExist(string accountID)
 {
     using (var db = new KyomuDbContext())
     {
         try
         {
             foreach (var members in db.Users)
             {
                 if (members.id.Equals(accountID))
                 {
                     return(true);
                 }
             }
             return(false);
         }
         catch (Exception e)
         {
             Console.WriteLine(e.Message);
             return(false);
         }
     }
 }
Пример #7
0
 /*
  * 引数 accountID:ユーザーID
  * 返値 return:付箋の配列JSON  out:HTTPのステータスコード
  * 受け取ったユーザーIDからDB内の付箋を検索し、該当する付箋をJSONの配列に変換して返す
  */
 public static JToken GetFusenAllData(string accountID, out int statusCode)
 {
     try
     {
         JArray UserFusen = new JArray();
         using (var db = new KyomuDbContext())
         {
             foreach (var fusen in db.Fusens)
             {
                 if (fusen.userID.Equals(accountID))
                 {
                     UserFusen.Add(Util.FusenToJobj(fusen));
                 }
             }
         }
         statusCode = 200;
         return(UserFusen);
     }catch (Exception e)
     {
         Console.WriteLine(e.Message);
         statusCode = 500;
         return(ServerMain.messagejson("データベースで異常が発生しました"));
     }
 }