示例#1
0
        public IQueryable <EF.GroupMember> Checklist(EF.Member args, int id)
        {
            var bll_g = new BLL.Group(unitOfWork);
            var g     = bll_g.Get(new EF.Group {
                Id = id
            }).Result;

            var res = from m in unitOfWork.MemberRepository.Entities
                      .Where(x => x.IsActive == true &&
                             x.CommunityId == args.CommunityId &&
                             x.Id != g.GroupLeader)
                      join gm in unitOfWork.GroupMemberRepository.Entities
                      .Where(x => x.GroupId == id) on m.Id equals gm.MemberId into left
                      from rec in left.DefaultIfEmpty()
                      where m.Name.Contains(args.Name ?? "") &&
                      m.Id != rec.Group.GroupLeader
                      select new EF.GroupMember
            {
                Member   = m,
                Group    = rec.Group,
                GroupId  = rec == null ? 0 : rec.GroupId,
                MemberId = m.Id
            };

            return(res.OrderBy(x => x.Member.Name));
        }
示例#2
0
        public async Task <IActionResult> Checklist([FromBody] string member, int id)
        {
            var bll_g  = groupBusiness;
            var bll_gm = groupMemberBusiness;
            var user   = HttpContext.Items["EndUser"] as EF.EndUser;

            if (!await bll_g.IsSelectedIdsOk(new int[] { id }, user))
            {
                return(Unauthorized());
            }

            var m = new EF.Member
            {
                Name        = member,
                CommunityId = user.Member.CommunityId
            };

            var res = from r in bll_gm.Checklist(m, id)
                      select new
            {
                r.Member.Name,
                r.MemberId,
                r.GroupId
            };

            return(Json(await res.ToListAsync()));
        }
示例#3
0
        public async Task <IActionResult> Members([FromBody] EF.Member obj, int id)
        {
            var bll_gm = groupMemberBusiness;
            var user   = HttpContext.Items["EndUser"] as EF.EndUser;

            return(Json(await bll_gm.Members(obj, id).ToListAsync()));
        }
示例#4
0
        public async Task Edit(EF.Member args)
        {
            // Validate Email
            var m = await Find(new EF.Member
            {
                Email       = String.IsNullOrEmpty(args.Email) ? "email" : args.Email.Trim(),
                CommunityId = args.CommunityId
            }).FirstOrDefaultAsync();

            if (m != null && args.Id != m.Id)
            {
                // Check if member is same
                throw new ArgumentException("The email you entered is being used by another member.");
            }

            var user = await _unitOfWork.MemberRepository.Entities.FirstAsync(x => x.Id == args.Id &&
                                                                              x.CommunityId == args.CommunityId);

            user.Name      = args.Name;
            user.NickName  = args.NickName;
            user.BirthDate = args.BirthDate;
            user.Gender    = args.Gender;
            user.Email     = args.Email;
            user.Address   = args.Address;
            user.Mobile    = args.Mobile;
            user.IsActive  = args.IsActive;
            user.InvitedBy = args.InvitedBy;
            user.Remarks   = args.Remarks;

            await _unitOfWork.CommitAsync();
        }
示例#5
0
        public async Task <int> Add(EF.Member args)
        {
            // Validate Email
            var m = await Find(new EF.Member
            {
                Email       = String.IsNullOrEmpty(args.Email) ? "email" : args.Email.Trim(),
                CommunityId = args.CommunityId
            }).FirstOrDefaultAsync();

            if (m == null)
            {
                // Validate Name
                m = await Find(new EF.Member
                {
                    Name        = (args.Name).ToUpper(),
                    CommunityId = args.CommunityId
                }).FirstOrDefaultAsync();
            }

            if (m == null)
            {
                // Add to Member
                m = new EF.Member
                {
                    Name        = (args.Name).ToUpper(),
                    NickName    = args.NickName,
                    Address     = args.Address,
                    Mobile      = args.Mobile,
                    Email       = args.Email,
                    BirthDate   = args.BirthDate,
                    CommunityId = args.CommunityId,
                    IsActive    = args.IsActive,
                    CreatedBy   = args.CreatedBy,
                    DateCreated = args.DateCreated,
                    InvitedBy   = args.InvitedBy,
                    Remarks     = args.Remarks
                };

                await _unitOfWork.MemberRepository.AddAsync(m);

                _unitOfWork.Commit();
            }
            else
            {
                // Is equal to New Member info Email?
                if (m.Email == null || m.Email == string.Empty)
                {
                    // Update Email when Existing Member Info has no Email
                    m.Email = args.Email.Trim();
                    await Edit(m);
                }
                else if (m.Email != args.Email)
                {
                    throw new ArgumentException("Oops. There's something wrong with your entry. Please contact admin.");
                }
            }

            return(m.Id);
        }
示例#6
0
 /// <summary>
 /// Gets or finds the list of members in a group
 /// </summary>
 /// <param name="args">Member</param>
 /// <param name="id">Group id</param>
 /// <returns>List of members</returns>
 public IQueryable <EF.Member> Members(EF.Member args, int id)
 {
     return(unitOfWork.GroupMemberRepository.Entities
            .Include(x => x.Member)
            .Where(x => x.GroupId == id &&
                   x.Member.Name.Contains(args.Name ?? ""))
            .Select(x => x.Member).OrderBy(x => x.Name));
 }
示例#7
0
        public IQueryable <EF.Member> Search(EF.Member args)
        {
            var res = _unitOfWork.MemberRepository.Entities.Where(x => x.Name.Contains(args.Name ?? "") ||
                                                                  ((x.Email ?? "").Contains(args.Email ?? "")) &&
                                                                  x.CommunityId == args.CommunityId)
                      .OrderBy(x => x.Name).AsQueryable();

            return(res);
        }
示例#8
0
        public void EditMember_Success(EF.Member args)
        {
            var completed = false;

            mockUnitOfWork.Setup(x => x.CommitAsync()).Callback(() =>
            {
                completed = true;
            });

            memberBusiness.Edit(args);

            Assert.True(completed);
        }
示例#9
0
        public void AddMember_Success(EF.Member args)
        {
            var list  = mockMemberRepo.Object.Entities.ToList();
            var count = list.Count;

            mockUnitOfWork.Setup(x => x.Commit()).Callback(() =>
            {
                list.Add(args);
            });

            var id = memberBusiness.Add(args).Result;

            Assert.True(list.Count > count);
        }
示例#10
0
        public IQueryable <EF.Member> Find(EF.Member args)
        {
            var res = _unitOfWork.MemberRepository.Entities
                      .Include(x => x.EndUser).ThenInclude(x => x.Role)
                      .Where(x => x.Name.Contains(args.Name ?? "") &&
                             ((x.Email ?? "").Contains(args.Email ?? "")) &&
                             x.CommunityId == args.CommunityId)
                      .OrderBy(x => x.Name).AsQueryable();

            if (args.EndUser != null)
            {
                res = res.Where(x => x.EndUser.RoleId == args.EndUser.RoleId);
            }

            return(res);
        }
示例#11
0
        public async Task <IActionResult> Page([FromBody] string member, int id, int p)
        {
            var bll_g  = groupBusiness;
            var bll_gm = groupMemberBusiness;
            var user   = HttpContext.Items["EndUser"] as EF.EndUser;

            if (!await bll_g.IsSelectedIdsOk(new int[] { id }, user))
            {
                return(Unauthorized());
            }

            var m = new EF.Member
            {
                Name        = member,
                CommunityId = user.Member.CommunityId
            };

            var res = from r in bll_gm.Checklist(m, id)
                      select new
            {
                r.Member.Name,
                r.MemberId,
                r.GroupId
            };

            var page  = p;
            var pager = new Core.Pager(await res.CountAsync(), page == 0 ? 1 : page, 100);

            dynamic obj1 = new ExpandoObject();

            obj1.checklist = await res.Skip((pager.CurrentPage - 1) *pager.PageSize).Take(pager.PageSize).ToListAsync();

            obj1.pager = pager;

            return(Json(obj1));
        }
示例#12
0
        public void FindGroupMember_HasNoResult(EF.Member args, int eventId)
        {
            var res = groupMemberBusiness.Members(args, eventId);

            Assert.True(res.Count() == 0);
        }
示例#13
0
 public Task Delete(EF.Member args)
 {
     throw new NotImplementedException();
 }
示例#14
0
 public async Task <EF.Member> Get(EF.Member args)
 {
     return(await _unitOfWork.MemberRepository.Entities.FirstOrDefaultAsync(x => x.Id == args.Id &&
                                                                            x.CommunityId == args.CommunityId));
 }
示例#15
0
 public void EditMember_ExistingEmail(EF.Member args)
 {
     // Verify if error was thrown
     // https://stackoverflow.com/questions/16053433/moq-verify-exception-was-thrown
     Assert.ThrowsAsync <ArgumentException>(() => memberBusiness.Edit(args));
 }
示例#16
0
        public void FindMember_NoResult(EF.Member args)
        {
            var res = memberBusiness.Find(args);

            Assert.True(res.Count() == 0);
        }