Ejemplo n.º 1
0
        public async Task <IActionResult> GetTaskTypeKeysAsync([FromHeader] String source,
                                                               [FromQuery] MemberIdGet item)
        {
            var response = new Response <Object>();

            try {
                var dists = await _ISystemDictionaryRepository.GetKeyNames("CategoryDay");

                if (dists.Count <= 0)
                {
                    return(NoContent());
                }
                dists.RemoveAt(dists.FindIndex(a => a.DistKey == "1"));
                var distKeys = dists.Select(a => int.Parse(a.DistKey)).ToList();
                var tasks    = await _ITaskInfoRepository.Query(a => distKeys.Contains(a.CategoryDay.Value) &&
                                                                a.IsNoviceTask != 1 &&
                                                                a.IsDisplay == 1 &&
                                                                a.IsEnable == 1)
                               .OrderBy(a => a.Sequence)
                               .Select(a => new TaskInfoDto {
                    TaskId        = a.TaskId,
                    TaskName      = a.TaskName,
                    TaskCode      = a.TaskCode,
                    ShowDesc      = a.ShowDesc,
                    BeansText     = a.BeansText,
                    Tips          = a.Tips,
                    CategoryDay   = a.CategoryDay,
                    IconType      = a.IconType,
                    JumpType      = a.JumpType,
                    JumpTitle     = a.JumpTitle,
                    JumpUrl       = a.JumpUrl,
                    AlreadyNumber = a.UpperNumber.HasValue ? a.MemberIncomes.Count(b => b.TaskCode == a.TaskCode && b.MemberId == item.MemberId && b.CreateTime.Value.ToString("yyyy-MM-dd") == System.DateTime.Now.ToString("yyyy-MM-dd")) : (a.UpperSeconds.HasValue ? a.MemberIncomes.Where(b => b.TaskCode == a.TaskCode && b.MemberId == item.MemberId && b.CreateTime.Value.ToString("yyyy-MM-dd") == System.DateTime.Now.ToString("yyyy-MM-dd")).Sum(b => b.ReadTime) / 60 : 0),
                    UpperNumber   = a.UpperNumber.HasValue ? a.UpperNumber : (a.UpperSeconds.HasValue ? a.UpperSeconds / 60 : 0),
                    UpperBeans    = a.UpperBeans.HasValue ? a.UpperBeans : (a.UpperSeconds.HasValue ? a.UpperSecondsBeans : 0)
                })
                               .ToListAsync();

                response.Code = true;
                response.Data = new {
                    Dists = dists,
                    Tasks = tasks
                };
            }
            catch (Exception ex) {
                response.SetError(ex, this._ILogger);
            }
            return(response.ToHttpResponse());
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> GetTaskNovicesAsync([FromHeader] String source,
                                                              [FromQuery] MemberIdGet item)
        {
            var response = new Response <Object>();

            try {
                if (await _ITaskNoviceLogRepository.IsExistAsync(a => a.MemberId == item.MemberId && a.IsEnable == 1))
                {
                    var noviceLogIds = await _ITaskNoviceLogRepository.Query(a => a.MemberId == item.MemberId && a.CategoryDay == 1 && a.IsEnable == 1)
                                       .Select(a => a.TaskId)
                                       .ToListAsync();

                    var tasks = await _ITaskInfoRepository.Query(a => noviceLogIds.Contains(a.TaskId) &&
                                                                 a.IsDisplay == 1 &&
                                                                 a.IsEnable == 1)
                                .OrderBy(a => a.Sequence)
                                .Select(a => new TaskInfoDto {
                        TaskId        = a.TaskId,
                        TaskName      = a.TaskName,
                        TaskCode      = a.TaskCode,
                        ShowDesc      = a.ShowDesc,
                        BeansText     = a.BeansText,
                        Tips          = a.Tips,
                        CategoryDay   = a.CategoryDay,
                        IconType      = a.IconType,
                        JumpType      = a.JumpType,
                        JumpTitle     = a.JumpTitle,
                        JumpUrl       = a.JumpUrl,
                        AlreadyNumber = a.UpperNumber.HasValue ? a.MemberIncomes.Count(b => b.TaskCode == a.TaskCode && b.MemberId == item.MemberId) : (a.UpperSeconds.HasValue ? a.MemberIncomes.Sum(b => b.ReadTime) / 60 : 0),
                        UpperNumber   = a.UpperNumber.HasValue ? a.UpperNumber : (a.UpperSeconds.HasValue ? a.UpperSeconds / 60 : 0),
                        UpperBeans    = a.UpperBeans.HasValue ? a.UpperBeans : (a.UpperSeconds.HasValue ? a.UpperSecondsBeans : 0)
                    })
                                .ToListAsync();

                    response.Code = true;
                    response.Data = tasks;
                }
                else
                {
                    return(NoContent());
                }
            }
            catch (Exception ex) {
                response.SetError(ex, this._ILogger);
            }
            return(response.ToHttpResponse());
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> GetDictionariesAsync([FromHeader] String source,
                                                               [FromQuery] MemberIdGet item)
        {
            var response = new Response <List <DistTaskResponse> >();

            try {
                var dists = await _ISystemDictionaryRepository.Query(a => a.TypeKey == "CategoryFixed" && a.IsEnable == 1, a => a.Sequence)
                            .Select(a => new DistTaskResponse {
                    DistKey  = a.DistKey,
                    DistName = a.DistName
                })
                            .ToListAsync();

                if (dists.Count > 0)
                {
                    var ids    = dists.Select(a => int.Parse(a.DistKey)).ToList();
                    var groups = await _IMemberIncomeRepository.Query(a => a.MemberId == item.MemberId &&
                                                                      ids.Contains(a.CategoryFixed.Value) &&
                                                                      a.CreateTime.Value.ToString("yyyy-MM-dd") == System.DateTime.Now.ToString("yyyy-MM-dd") &&
                                                                      a.Status == 0)
                                 .GroupBy(a => a.CategoryFixed)
                                 .Select(a => new DistTaskResponse {
                        DistKey = a.Key.ToString(),
                        Beans   = a.Sum(b => b.Beans.HasValue ? b.Beans.Value : 0)
                    }).ToListAsync();

                    dists.ForEach(a => {
                        var group = groups.SingleOrDefault(b => b.DistKey == a.DistKey);
                        if (group != null)
                        {
                            a.Beans = group.Beans;
                        }
                    });
                    response.Code = true;
                    response.Data = dists;
                }
                else
                {
                    return(NoContent());
                }
            }
            catch (Exception ex) {
                response.SetError(ex, this._ILogger);
            }
            return(response.ToHttpResponse());
        }
Ejemplo n.º 4
0
        public async Task <IActionResult> GetTaskDayAsync([FromHeader] String source,
                                                          [FromQuery] MemberIdGet item)
        {
            var response = new Response <Object>();
            var taskCode = "T0005";

            try {
                var taskInfo = await _ITaskInfoRepository.FirstOrDefaultAsync(a => a.TaskCode == taskCode && a.IsEnable == 1);

                if (taskInfo == null)
                {
                    return(NotFound());
                }
                var weeks = await _ITaskDetailsRepository.Query(a => a.TaskId == taskInfo.TaskId && a.IsEnable == 1)
                            .OrderBy(a => a.Sequence)
                            .ToListAsync();

                if (weeks.Count <= 0)
                {
                    return(NoContent());
                }
                // 当前日期
                var nows = System.DateTime.Now;
                // 签到天数
                var signNumber = 0;
                // 今日签到数据
                var memberIncome = await _IMemberIncomeRepository.Query(a => a.TaskCode == taskCode &&
                                                                        a.Status == 0 &&
                                                                        a.MemberId == item.MemberId &&
                                                                        a.CreateTime.Value.ToString("yyyy-MM-dd") == nows.ToString("yyyy-MM-dd"))
                                   .SingleOrDefaultAsync();

                if (memberIncome == null)
                {
                    // 昨日签到数据
                    memberIncome = await _IMemberIncomeRepository.Query(a => a.TaskCode == taskCode &&
                                                                        a.Status == 0 &&
                                                                        a.MemberId == item.MemberId &&
                                                                        a.CreateTime.Value.ToString("yyyy-MM-dd") == nows.AddDays(-1).ToString("yyyy-MM-dd"))
                                   .SingleOrDefaultAsync();
                }
                var todaySignin = false;
                if (memberIncome != null)
                {
                    signNumber  = memberIncome.SignNumber.Value;
                    todaySignin = memberIncome.CreateTime.Value.ToString("yyyy-MM-dd") == nows.ToString("yyyy-MM-dd");
                }
                DateTime beforeTime;
                //第一天签到或者签到7天
                if (signNumber >= 7 || (signNumber == 1 && todaySignin))
                {
                    beforeTime = System.DateTime.Now;
                }
                else if (!todaySignin)   //今天未签
                {
                    beforeTime = System.DateTime.Now.AddDays(-signNumber);
                }
                else //今天已签
                {
                    beforeTime = System.DateTime.Now.AddDays(-signNumber + 1);
                }
                var result = new List <Object>();
                for (var i = 0; i < weeks.Count; i++)
                {
                    var time = beforeTime.AddDays(i);
                    result.Add(new {
                        CreateTime = time.ToString("yyyy-MM-dd"),
                        IsSignin   = i < signNumber,
                        Beans      = weeks[i].Beans
                    });
                }
                response.Code = true;
                response.Data = new {
                    TodaySignin = todaySignin,
                    Weeks       = result
                };
            }
            catch (Exception ex) {
                response.SetError(ex, this._ILogger);
            }
            return(response.ToHttpResponse());
        }