public async Task<All_UserModel> ListAll(Guid userid) { All_UserModel userModel = new All_UserModel(); //get user User user = new User() { id = userid }; if (await user.FindByID()) { userModel.id = user.id; userModel.facebook_id = user.facebook_id; userModel.gender = user.gender; userModel.email = user.email; userModel.name = user.name; userModel.first_name = user.first_name; userModel.last_name = user.last_name; } //get group GroupList group = new GroupList(); List<GroupListResponseModel> groups = await group.ListByUserId(user.id); userModel.groups = new List<All_GroupModel>(); foreach (GroupListResponseModel g in groups) { All_GroupModel groupModel = new All_GroupModel(); groupModel.id = g.id; groupModel.name = g.name; groupModel.description = g.description; groupModel.status = g.status; groupModel.created_at = g.created_at; //get group members Membership member = new Membership(); groupModel.members = await member.ListGroupMember(g.id); //get items in each group ItemList item = new ItemList(); List<ItemListResponseModel> items = await item.ListByGroupId(g.id); groupModel.items = new List<All_ItemModel>(); foreach (ItemListResponseModel i in items) { All_ItemModel itemModel = new All_ItemModel(); itemModel.id = i.id; itemModel.name = i.name; itemModel.description = i.description; itemModel.status = i.status; itemModel.created_at = i.created_at; itemModel.category = i.category; itemModel.category_id = i.category_id; itemModel.created_by = i.created_by; groupModel.items.Add(itemModel); } userModel.groups.Add(groupModel); } return userModel; }
public async Task<ApiMessage> Post(UserRegisterModel model) { ApiMessage msg = new ApiMessage() { success = false }; try { if (ModelState.IsValid) { UserResponseModel response; if (!UniTool.VerifyFacebook(model.facebook_id, model.access_token, out response)) { msg.message = "Sorry, Facebook access token is invalid"; return msg; } User user = new User(response); bool success = await user.FindByFacebookID(); if (success) { await user.FindByID(); msg.message = "This user had been registered before"; msg.success = true; msg.data = user.Return; } else { user.isAnonymous = false; if (await user.Register()) { msg.message = "User has been registered successfully"; msg.success = true; msg.data = user.Return; } } } else { msg.message = "data is not completed"; } } catch (Exception e) { msg.message = e.Message; } return msg; }
public async Task<List<ItemListResponseModel>> ListByGroupId(Guid group_id) { List<ItemListResponseModel> items = new List<ItemListResponseModel>(); Exception err = null; string sql = "SELECT id, name, description, status, created_at, created_by, category, category_id FROM dbo.ItemLists WITH (NOLOCK) WHERE group_id = @group_id"; if (db.State != ConnectionState.Open) await db.OpenAsync(); try { DataTable dt = new DataTable(); SqlCommand cmd = new SqlCommand(sql, db); cmd.Parameters.AddWithValue("@group_id", group_id); SqlDataAdapter adp = new SqlDataAdapter(); adp.SelectCommand = cmd; adp.Fill(dt); if (dt != null && !dt.HasErrors && dt.Rows.Count > 0) { foreach (DataRow dr in dt.Rows) { ItemList item = new ItemList(); item.id = (Guid)dr["id"]; item.name = dr["name"].ToString(); item.description = dr["description"].ToString(); item.status = (ItemStatus)dr["status"]; item.created_at = (DateTime)dr["created_at"]; item.created_by = (Guid)dr["created_by"]; item.category = dr["category"].ToString(); item.category_id = (Guid)dr["category_id"]; User aUser = new User() { id = item.created_by }; await aUser.FindByID(); item.creator = aUser; items.Add(item.Return); } } } catch (Exception e) { err = e; } finally { db.Close(); } if (err != null) { throw err; } return items; }
public async Task<bool> FindById() { bool success = false; Exception err = null; string sql = "SELECT name, description, status, created_at, created_by, category, category_id FROM dbo.ItemLists WITH (NOLOCK) WHERE id LIKE @id"; if (db.State != ConnectionState.Open) await db.OpenAsync(); try { DataTable dt = new DataTable(); SqlCommand cmd = new SqlCommand(sql, db); cmd.Parameters.AddWithValue("@id", id); SqlDataAdapter adp = new SqlDataAdapter(); adp.SelectCommand = cmd; adp.Fill(dt); if (dt != null && !dt.HasErrors && dt.Rows.Count > 0) { this.name = dt.Rows[0]["name"].ToString(); this.description = dt.Rows[0]["description"].ToString(); this.status = (ItemStatus)dt.Rows[0]["status"]; this.created_at = (DateTime)dt.Rows[0]["created_at"]; this.created_by = (Guid)dt.Rows[0]["created_by"]; this.category = dt.Rows[0]["category"].ToString(); this.category_id = (Guid)dt.Rows[0]["category_id"]; User aUser = new User() { id = this.created_by }; await aUser.FindByID(); this.creator = aUser; success = true; } } catch (Exception e) { err = e; } finally { db.Close(); } if (err != null) { throw err; } return success; }
public async Task<ApiMessage> Post(LinkDeviceRegisterModel model) { ApiMessage msg = new ApiMessage() { success = false, data = model }; try { //scenario 1: provided with Device id and User id if (model.user.id != null && model.device.id != null && model.user.id != Guid.Empty && model.device.id != Guid.Empty) { Device device = new Device() { id = model.device.id }; User user = new User() { id = model.user.id }; if (await user.FindByID() && await device.FindByID()) { DeviceOwner downer = new DeviceOwner() { user = user, device = device }; if (await downer.FindByDeviceAndUserId()) { msg.success = false; msg.message = "Device and User had been linked before"; msg.data = downer.Return; } else if (await downer.LinkDevice()) { msg.success = true; msg.message = "Device and User is linked successfully"; msg.data = downer.Return; } else { msg.message = "Device and User is failed to link"; } } else { msg.message = "Device or User is not registered yet."; } } else //scenario 2: register user and device { Device device = new Device() { uuid = model.device.uuid, os = model.device.os, model = model.device.model, app_token = model.device.app_token, user_id = model.device.user_id }; User user = new User() { facebook_id = model.user.facebook_id, access_token = model.user.access_token }; DeviceOwner downer = new DeviceOwner() { user = user, device = device }; UserResponseModel response; if (!UniTool.VerifyFacebook(user.facebook_id, user.access_token, out response)) { msg.message = "Sorry, Facebook access token is invalid"; return msg; } user = new User(response); //try find user and device first bool installed = true; if (!await device.FindByUUID()) { installed = await device.Install(); } else { await device.FindByID(); } if (installed && !await user.FindByFacebookID()) { installed = await user.Register(); } downer.device = device; downer.user = user; //try register user and device first if (installed) { if (await downer.FindByDeviceAndUserId()) { msg.success = true; msg.message = "Device and User had been linked before"; downer.user = user; downer.device = device; msg.data = downer.Return; } else if (await downer.LinkDevice()) { msg.success = true; msg.message = "Device and User is linked successfully"; downer.user = user; downer.device = device; msg.data = downer.Return; } else { msg.message = "Device and User is failed to link"; } } else { msg.message = "Device and User is failed to be created"; } } } catch (Exception e) { msg.message = e.Message; } return msg; }