示例#1
0
        public MessageGroupOutput GetMessageGroupByReporterId(Guid id)
        {
            var existReporter = _reporterInfoRepo.FirstOrDefault(r => r.Id == id);

            if (existReporter == null)
            {
                throw new UserFriendlyException("没有此人员");
            }
            var messageGroupId = existReporter.MessageGroup.Id;
            var members        = _groupMemberRepo.GetAll().Where(g => g.MessageGroup.Id == messageGroupId).ToList();

            if (members == null)
            {
                throw new UserFriendlyException("此人员没有队伍");
            }
            var existMessageGroup = _messageGroupRepo.FirstOrDefault(m => m.Id == messageGroupId);

            var outResult = new MessageGroupOutput()
            {
                CreateTime    = existMessageGroup.CreateTime,
                Disaster      = existMessageGroup.Disaster.MapTo <List <MessageDisasterOutput> >(),
                GroupName     = existMessageGroup.GroupName,
                GroupTotalNum = existMessageGroup.GroupTotalNum,
                Id            = existMessageGroup.Id,
                Member        = members.MapTo <List <ReporterMemberOutput> >(),
                Photo         = existMessageGroup.Photo,
                Remark        = existMessageGroup.Remark,
                Type          = existMessageGroup.Type,
            };

            return(outResult);
        }
示例#2
0
        public MessageGroupOutput GetMessageGroupById(Guid id, int pageIndex = 1, int pageSize = 9999)
        {
            var existMessageGroup = _messageGroupRepo.FirstOrDefault(m => m.Id == id);

            if (existMessageGroup == null)
            {
                throw new UserFriendlyException("没有此消息团队组");
            }

            var Members = _groupMemberRepo.GetAll().Where(g => g.MessageGroup.Id == existMessageGroup.Id).OrderBy(g => g.Type).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();

            var outResult = new MessageGroupOutput()
            {
                CreateTime    = existMessageGroup.CreateTime,
                GroupName     = existMessageGroup.GroupName,
                GroupTotalNum = existMessageGroup.GroupTotalNum,
                Id            = existMessageGroup.Id,
                Member        = Members.MapTo <List <ReporterMemberOutput> >(),
                Photo         = existMessageGroup.Photo,
                Remark        = existMessageGroup.Remark,
                Type          = existMessageGroup.Type,
                Disaster      = existMessageGroup.Disaster.MapTo <List <MessageDisasterOutput> >()
            };

            return(outResult);
        }
示例#3
0
        public MessageGroupOutput DeleteGroupMember(GroupMemeberDeleteInput input)
        {
            // 先得到消息组
            var existMessageGroup = _messageGroupRepo.FirstOrDefault(m => m.Id == input.MessageGroupId);

            if (existMessageGroup == null)
            {
                throw new UserFriendlyException("没有对应的消息组");
            }
            // 之前的总人数
            var beforeCount = existMessageGroup.Reporter.Count;

            // 要减去有messagegroupId 但是 hasgroup为false的总数
            beforeCount = beforeCount - _reporterInfoRepo.Count(r => r.MessageGroup.Id == input.MessageGroupId && r.HasGroup == false);

            // 用来保存删除队员后 剩下的队员
            List <ReporterInfoTb> reporterList = new List <ReporterInfoTb>();

            // 得到删除后的对应的上报人员
            foreach (var r in existMessageGroup.Reporter)
            {
                // 判断此队员是否没有组
                if (r.HasGroup == false)
                {
                    continue;
                }
                // 判断此人是否在删除队列里
                var flag = false;

                for (var i = 0; i < input.ReporterId.Count; i++)
                {
                    if (input.ReporterId[i] == r.Id)
                    {
                        // 判断是否是负责人
                        var tempId  = input.ReporterId[i];
                        var member_ = _groupMemberRepo.FirstOrDefault(g => g.Reporter.Id == tempId);
                        if (member_.Type == 1)   // 负责人
                        {
                            throw new UserFriendlyException("负责人不能被移除团队");
                        }
                        flag = true;
                        break;
                    }
                }
                // 如果此人是要被删除的
                if (flag == true)
                {
                    // 移除此人关联队伍关系
                    r.HasGroup = false;
                    _reporterInfoRepo.Update(r);
                    continue;
                }
                else
                {
                    try
                    {
                        reporterList.Add(r);
                    }
                    catch (Exception e)
                    {
                        throw new UserFriendlyException(e.ToString());
                    }
                }
            }

            // 如果没有删除任何人
            if (beforeCount == reporterList.Count)
            {
                throw new UserFriendlyException("没有删除任何队员");
            }

            // 得到组员总数
            existMessageGroup.GroupTotalNum = reporterList.Count;

            // 更新组
            _messageGroupRepo.InsertOrUpdate(existMessageGroup);

            // 再删除对应表上的人员
            var afterMembers = _groupMemberRepo.GetAll().Where(g => g.MessageGroup.Id == input.MessageGroupId).ToList();

            for (var i = 0; i < input.ReporterId.Count; i++)
            {
                var tempId       = input.ReporterId[i];
                var deleteEntity = _groupMemberRepo.FirstOrDefault(g => g.Reporter.Id == tempId);
                afterMembers.Remove(deleteEntity);
                _groupMemberRepo.Delete(deleteEntity);
            }

            var outResult = new MessageGroupOutput()
            {
                CreateTime    = existMessageGroup.CreateTime,
                GroupName     = existMessageGroup.GroupName,
                GroupTotalNum = existMessageGroup.GroupTotalNum,
                Id            = existMessageGroup.Id,
                Member        = afterMembers.MapTo <List <ReporterMemberOutput> >(),
                Photo         = existMessageGroup.Photo,
                Remark        = existMessageGroup.Remark,
                Type          = existMessageGroup.Type,
                Disaster      = existMessageGroup.Disaster.MapTo <List <MessageDisasterOutput> >()
            };

            return(outResult);
        }
示例#4
0
        public MessageGroupOutput AddGroupMember(GroupMemberAddInput input)
        {
            // 先得到消息组
            var existMessageGroup = _messageGroupRepo.FirstOrDefault(m => m.Id == input.MessageGroupId);

            if (existMessageGroup == null)
            {
                throw new UserFriendlyException("没有对应的消息组");
            }
            // 之前的总人数
            var beforeCount = existMessageGroup.Reporter.Count;

            // 要减去有messagegroupId 但是 hasgroup为false的总数
            beforeCount = beforeCount - _reporterInfoRepo.Count(r => r.MessageGroup.Id == input.MessageGroupId && r.HasGroup == false);

            // 新进的组员
            List <ReporterInfoTb> reporterList = new List <ReporterInfoTb>();

            // 新的成员
            var newMembers = new List <GroupMemberTb>();

            var beforeMemberCount = 0;

            // 得到对应的上报人员
            for (var i = 0; i < input.ReporterId.Count; i++)
            {
                // 判断此人是否在群组里
                var flag = false;
                // 是否是之前组里的人员
                var isBefore = false;

                foreach (var r in existMessageGroup.Reporter)
                {
                    if (r.Id == input.ReporterId[i])
                    {
                        // 如果在组里 并且有组hasGroup不为false
                        if (r.HasGroup == true)
                        {
                            flag = true;
                            break;
                        }
                        else
                        {
                            // 需要重新添加进组
                            flag     = false;
                            isBefore = true;
                            break;
                        }
                    }
                }

                if (flag == true)
                {
                    continue;
                }

                try {
                    // 如果是之前组里有过的人员
                    if (isBefore == true)
                    {
                        var tempId         = input.ReporterId[i];
                        var beforeReporter = _reporterInfoRepo.FirstOrDefault(r => r.Id == tempId);
                        beforeReporter.HasGroup = true;
                        _reporterInfoRepo.InsertOrUpdate(beforeReporter);

                        // 添加到组员表中
                        var beforeMember = new GroupMemberTb()
                        {
                            MessageGroup = existMessageGroup,
                            Reporter     = beforeReporter,
                            Type         = 3
                        };

                        var id = _groupMemberRepo.InsertAndGetId(beforeMember);
                        beforeMember.Id = id;
                        newMembers.Add(beforeMember);
                        beforeMemberCount++;
                    }
                    else // 如果在上一次的变更队伍后没加入过此队伍
                    {
                        var tempId       = input.ReporterId[i];
                        var tempReporter = _reporterInfoRepo.FirstOrDefault(r => r.Id == tempId);

                        // 添加进组
                        reporterList.Add(tempReporter);
                        tempReporter.HasGroup = true;
                        _reporterInfoRepo.InsertOrUpdate(tempReporter);

                        existMessageGroup.Reporter.Add(tempReporter);
                    }
                } catch (Exception e)
                {
                    throw new UserFriendlyException(e.ToString());
                }
            }

            // 如果没有增加任何人
            if (0 == (reporterList.Count + beforeMemberCount))
            {
                throw new UserFriendlyException("没有增加任何队员");
            }

            // 得到组员总数
            existMessageGroup.GroupTotalNum = beforeCount + (reporterList.Count + beforeMemberCount);

            // 更新组
            _messageGroupRepo.InsertOrUpdate(existMessageGroup);

            foreach (var r in reporterList)
            {
                var groupMember = new GroupMemberTb()
                {
                    MessageGroup = existMessageGroup,
                    Reporter     = r,
                    Type         = 3
                };

                var id = _groupMemberRepo.InsertAndGetId(groupMember);
                groupMember.Id = id;

                newMembers.Add(groupMember);
            }

            var beforeMembers = _groupMemberRepo.GetAll().Where(g => g.MessageGroup.Id == existMessageGroup.Id).ToList();

            beforeMembers.AddRange(newMembers);

            var outResult = new MessageGroupOutput()
            {
                CreateTime    = existMessageGroup.CreateTime,
                GroupName     = existMessageGroup.GroupName,
                GroupTotalNum = existMessageGroup.GroupTotalNum,
                Id            = existMessageGroup.Id,
                Member        = beforeMembers.MapTo <List <ReporterMemberOutput> >(),
                Photo         = existMessageGroup.Photo,
                Remark        = existMessageGroup.Remark,
                Type          = existMessageGroup.Type,
                Disaster      = existMessageGroup.Disaster.MapTo <List <MessageDisasterOutput> >()
            };

            return(outResult);
        }
示例#5
0
        public MessageGroupOutput AddMessageGroup(MessageGroupAddInput input)
        {
            // 需要指定一个队长
            var existReporter = _reporterInfoRepo.FirstOrDefault(r => r.Id == input.ReporterId);

            if (existReporter == null)
            {
                throw new UserFriendlyException("没有对应的上报人员");
            }

            var newMessageGroup = new MessageGroupTb()
            {
                CreateTime    = DateTime.Now,
                GroupName     = input.GroupName,
                GroupTotalNum = 1,
                Remark        = input.Remark,
                Type          = input.Type
            };

            try
            {
                List <ReporterInfoTb> _reporter = new List <ReporterInfoTb>();
                _reporter.Add(existReporter);

                // 设置为有组了
                existReporter.HasGroup = true;
                _reporterInfoRepo.InsertOrUpdate(existReporter);

                newMessageGroup.Reporter = _reporter;

                var id = _messageGroupRepo.InsertOrUpdateAndGetId(newMessageGroup);
                newMessageGroup.Id = id;

                var newGroupMember = new GroupMemberTb()
                {
                    MessageGroup = newMessageGroup,
                    Reporter     = existReporter,
                    Type         = 1
                };

                id = _groupMemberRepo.InsertAndGetId(newGroupMember);
                newGroupMember.Id = id;

                var Members = new List <GroupMemberTb>();

                // 把刚刚增加的成员添加进去
                Members.Add(newGroupMember);

                var outResult = new MessageGroupOutput()
                {
                    CreateTime    = newMessageGroup.CreateTime,
                    GroupName     = newMessageGroup.GroupName,
                    GroupTotalNum = newMessageGroup.GroupTotalNum,
                    Id            = newMessageGroup.Id,
                    Member        = Members.MapTo <List <ReporterMemberOutput> >(),
                    Photo         = newMessageGroup.Photo,
                    Remark        = newMessageGroup.Remark,
                    Type          = newMessageGroup.Type,
                    Disaster      = newMessageGroup.Disaster.MapTo <List <MessageDisasterOutput> >()
                };

                return(outResult);
            }
            catch (Exception e)
            {
                throw new UserFriendlyException(e.ToString());
            }
        }