private async Task UpdateTaskNoviceLog(TaskItem item, TaskInfo taskInfo) { if (taskInfo.IsNoviceTask == 1 && taskInfo.IsDisposable == 1) { if (await _ITaskNoviceLogRepository.IsExistAsync(a => a.TaskId == taskInfo.TaskId && a.MemberId == item.MemberId && a.IsEnable == 1)) { await _ITaskNoviceLogRepository.BatchUpdateAsync(a => a.TaskId == taskInfo.TaskId && a.MemberId == item.MemberId, a => new TaskNoviceLog() { IsEnable = 0 }); if (!await _ITaskNoviceLogRepository.IsExistAsync(a => a.TaskId == taskInfo.TaskId && a.MemberId == item.MemberId && a.IsEnable == 1)) { await _IMemberInfosRepository.BatchUpdateAsync(a => a.MemberId == item.MemberId, a => new MemberInfos() { IsNoviceTask = 1 }); } } } }
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()); }