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(); } } } }
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); }