/* * 引数 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("データベースで異常が発生しました")); } }
/* * 引数 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("データベースで異常が発生しました")); } }
/* * 引数 付箋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("データベースで異常が発生しました")); } }
/* * 引数 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("データベースで異常が発生しました")); } }
/* * 引数 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("データベースで異常が発生しました")); } }
/* * 引数 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); } } }
/* * 引数 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("データベースで異常が発生しました")); } }