示例#1
0
        public void Leave(int memberId, LeaveGroupRequestModel model)
        {
            if (!model.GroupId.HasValue)
            {
                throw new OrgException("Invalid group Id");
            }

            using (OrgCommEntities dbc = new OrgCommEntities(DBConfigs.OrgCommConnectionString))
            {
                var group = dbc.Groups.SingleOrDefault(r => r.Id.Equals(model.GroupId.Value));

                if (group == null)
                {
                    throw new OrgException("Group not found");
                }

                var groupmeber = dbc.GroupMembers.SingleOrDefault(r => r.GroupId.Equals(model.GroupId.Value) && r.MemberId.Equals(memberId));

                if (groupmeber == null)
                {
                    throw new OrgException("Member not in group");
                }

                try
                {
                    dbc.GroupMembers.Remove(groupmeber);

                    dbc.SaveChanges();
                }
                catch (System.Exception ex)
                {
                    throw new OrgException("Cannot leave group", ex);
                }

                if (group.Type == (int)OrgComm.Data.Models.Group.GroupType.Other)
                {
                    if (dbc.GroupMembers.Where(r => r.GroupId.Equals(model.GroupId.Value)).Count() == 0)
                    {
                        dbc.Groups.Remove(group);

                        dbc.SaveChanges();
                    }
                }
            }
        }
示例#2
0
        public ResultModel LeaveGroup(LeaveGroupRequestModel param)
        {
            ResultModel result = new ResultModel();

            try
            {
                int?memberId = IdentityHelper.GetMemberId();
                if (!memberId.HasValue)
                {
                    throw new OrgException("Invalid MemberId");
                }

                GroupBL bl = new GroupBL();

                bl.Leave(memberId.Value, param);

                result.Status  = true;
                result.Message = "Leave group successfully";
            }
            catch (OrgException oex)
            {
                result.Status  = false;
                result.Message = oex.Message;
            }
            catch (Exception ex)
            {
                result.Status  = false;
                result.Message = AppConfigs.InternalErrorMessage;

                if (AppConfigs.DebugInternalMessage)
                {
                    result.InternalMessage = ex.Message;
                }
            }

            return(result);
        }