예제 #1
0
        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;
        }
예제 #2
0
        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;
        }
예제 #3
0
        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;
        }
예제 #4
0
        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;
        }
예제 #5
0
        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;
        }