public async Task <ILeadershipPointSystemResponse> GetLeadershipPointSystemAsync(int profileId)
        {
            try
            {
                var profile = await _appDbContext.Profiles.FirstOrDefaultAsync(k => k.Id == profileId);

                if (profile == null)
                {
                    return(new LeadershipPointSystemResponse(ClientMessageConstant.ProfileNotExist, HttpStatusCode.NotFound));
                }

                var badges   = _appDbContext.Badges.Where(k => !k.IsDeleted).OrderBy(k => k.MinimumPoints).ToList();
                var criteria = _appDbContext.Criteria.Include(k => k.CriteriaCategory).Where(k => !k.IsDeleted).OrderBy(k => k.Points).ToList();

                var claimPoints = await _appDbContext.CriteriaClaims.Include(y => y.Criteria).Include(y => y.Criteria.CriteriaCategory)
                                  .Where(k => k.ProfileId == profileId && k.StatusId == (int)ClaimStatusType.Accepted && !k.IsDeleted).SumAsync(k => k.Criteria.Points);

                var model = new LeadershipPointSystemView
                {
                    ProfileId     = profile.Id,
                    CurrentPoints = Convert.ToInt32(profile.Lpspoints),
                    Badges        = _mapper.Map <List <BadgeView> >(badges),
                    CriteriaList  = _mapper.Map <List <CriteriaView> >(criteria)
                };

                profile.Lpspoints = claimPoints;

                await _appDbContext.SaveChangesAsync();


                return(new LeadershipPointSystemResponse(model));
            }
            catch (Exception e)
            {
                return(new LeadershipPointSystemResponse(e));
            }
        }
 public LeadershipPointSystemResponse(LeadershipPointSystemView leadershipPointSystemView) : this(true, string.Empty, leadershipPointSystemView)
 {
 }
 private LeadershipPointSystemResponse(bool success, string message, LeadershipPointSystemView leadershipPointSystemView) : base(success, message)
 {
     LeadershipPointSystemView = leadershipPointSystemView;
 }