194 lines
7.3 KiB
C#
194 lines
7.3 KiB
C#
using AutoMapper;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using System.Collections.Generic;
|
|
using System.Globalization;
|
|
using YD_WeChatApplet.Api.SmartSportsEntitys;
|
|
using YD_WeChatApplet.Api.Utilities;
|
|
using YD_WeChatApplet.Commons.Dto;
|
|
using YD_WeChatApplet.Commons.Dto.HomeWork;
|
|
using YD_WeChatApplet.Commons.Dto.School;
|
|
using YD_WeChatApplet.Commons.Enum;
|
|
using YD_WeChatApplet.Context;
|
|
using YD_WeChatApplet.Services;
|
|
|
|
namespace YD_WeChatApplet.Api.Services.Impl
|
|
{
|
|
public class HomeWorkService : IHomeWorkService
|
|
{
|
|
public SmartSportsContext _sportsContext;
|
|
public UserContext _userContext;
|
|
private readonly IMapper _mapper;
|
|
|
|
public HomeWorkService(SmartSportsContext sportsContext, UserContext userContext, IMapper mapper)
|
|
{
|
|
_sportsContext = sportsContext;
|
|
_userContext = userContext;
|
|
_mapper = mapper;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 老师新建作业
|
|
/// </summary>
|
|
/// <param name="paramDto"></param>
|
|
/// <returns></returns>
|
|
public async Task AddHomeWork(AddHomeWorkDto paramDto)
|
|
{
|
|
List<S_HomeWork> homeWorkEntities = new List<S_HomeWork>();
|
|
|
|
string startmmed = paramDto.StartTime.Substring(0, 19);
|
|
string endmmed = paramDto.EndTime.Substring(0, 19);
|
|
|
|
DateTime startDate = DateTime.ParseExact(startmmed, "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);
|
|
DateTime endDate = DateTime.ParseExact(endmmed, "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);
|
|
|
|
paramDto.StartTime = startmmed;
|
|
|
|
var weekList = paramDto.WeekList;
|
|
|
|
if (!paramDto.IsRepeat)
|
|
{
|
|
var homeWorkEntity = _mapper.Map<S_HomeWork>(paramDto);
|
|
homeWorkEntity.SchoolCode = UserLoginContext.Current.SchoolCode;
|
|
homeWorkEntity.TeacherId = UserLoginContext.Current.UserId;
|
|
homeWorkEntity.TeacherName = UserLoginContext.Current.UserName;
|
|
homeWorkEntity.WorkStatus = 1;
|
|
homeWorkEntity.CreateTime = DateTime.Now;
|
|
homeWorkEntity.StartTime = startDate;
|
|
homeWorkEntity.EndTime = endDate;
|
|
var workModeTypeText = paramDto.WorkModeType == WorkModeType.TimerCount ? paramDto.Duration + "秒" : paramDto.Amount + "个";
|
|
homeWorkEntity.WorkText = $"{paramDto.WorkModeTypeName} {workModeTypeText} 组数:{paramDto.GroupNumber}组";
|
|
|
|
homeWorkEntities.Add(homeWorkEntity);
|
|
}
|
|
else
|
|
{
|
|
for (var currentDate = startDate; currentDate <= endDate; currentDate = currentDate.AddDays(1))
|
|
{
|
|
if (weekList.Contains((currentDate.DayOfWeek == 0 ? 7 : (int)currentDate.DayOfWeek)))
|
|
{
|
|
var homeWorkEntity = _mapper.Map<S_HomeWork>(paramDto);
|
|
homeWorkEntity.SchoolCode = UserLoginContext.Current.SchoolCode;
|
|
homeWorkEntity.TeacherId = UserLoginContext.Current.UserId;
|
|
homeWorkEntity.TeacherName = UserLoginContext.Current.UserName;
|
|
homeWorkEntity.WorkStatus = 1;
|
|
homeWorkEntity.CreateTime = DateTime.Now;
|
|
homeWorkEntity.StartTime = currentDate.Date;
|
|
homeWorkEntity.EndTime = currentDate.Date.AddDays(1).AddSeconds(-1);
|
|
var workModeTypeText = paramDto.WorkModeType == WorkModeType.TimerCount ? paramDto.Duration + "秒" : paramDto.Amount + "个";
|
|
homeWorkEntity.WorkText = $"{paramDto.WorkModeTypeName} {workModeTypeText} 组数:{paramDto.GroupNumber}组";
|
|
|
|
homeWorkEntities.Add(homeWorkEntity);
|
|
}
|
|
}
|
|
}
|
|
|
|
await _sportsContext.AddRangeAsync(homeWorkEntities);
|
|
await _sportsContext.SaveChangesAsync();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 老师作业记录
|
|
/// </summary>
|
|
/// <param name="dto"></param>
|
|
/// <returns></returns>
|
|
public async Task<PageDataDto<HomeWorkRecordDto>> HomeWorkRecordByTeacher(PageDto dto)
|
|
{
|
|
var userId = UserLoginContext.Current.UserId;
|
|
var currentTime = DateTime.Now;
|
|
|
|
var query = _sportsContext.HomeWork
|
|
.Where(x => x.TeacherId == userId);
|
|
|
|
var totalCount = await query.CountAsync();
|
|
|
|
var list = await query
|
|
.Select(x => new HomeWorkRecordDto()
|
|
{
|
|
Id = x.Id,
|
|
WorkName = x.WorkName,
|
|
WorkTypeName = x.WorkTypeName,
|
|
WorkStatus = x.EndTime < currentTime ? 3 : (x.StartTime > currentTime ? 1 : 2),
|
|
StartTime = x.StartTime,
|
|
EndTime = x.EndTime
|
|
})
|
|
.OrderByDescending(x => x.Id)
|
|
.Skip((dto.PageIndex - 1) * dto.PageSize)
|
|
.Take(dto.PageSize)
|
|
.ToListAsync();
|
|
|
|
return new PageDataDto<HomeWorkRecordDto>
|
|
{
|
|
Total = totalCount,
|
|
Datas = list
|
|
};
|
|
}
|
|
|
|
/// <summary>
|
|
/// 老师作业详情
|
|
/// </summary>
|
|
/// <param name="homeWorkId"></param>
|
|
/// <returns></returns>
|
|
public async Task<HomeWorkDetailsDto> HomeWorkDetailsByTeacher(int homeWorkId)
|
|
{
|
|
var res = await _sportsContext.HomeWork.Where(x => x.Id == homeWorkId).Select(x => new HomeWorkDetailsDto()
|
|
{
|
|
Id = x.Id,
|
|
WorkName = $"{x.WorkName}-{x.WorkType.GetDescription()}",
|
|
StartTime = x.StartTime,
|
|
EndTime = x.EndTime,
|
|
StudentScope = x.StudentScope == 1 ? "全部学生" : "部分学生",
|
|
WorkText = x.WorkText,
|
|
WorkModeType = x.WorkModeType,
|
|
HomeWorkStudents = _mapper.Map<List<HomeWorkStudentsDto>>(x.HomeWorkStudents),
|
|
}).FirstAsync();
|
|
|
|
foreach (var item in res.HomeWorkStudents)
|
|
{
|
|
if (res.WorkModeType == WorkModeType.TimerCount)
|
|
item.Result = $"{item.Value}个";
|
|
else
|
|
item.Result = item.Value.ToMinutesSeconds();
|
|
|
|
}
|
|
|
|
return res;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 作业项目列表
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public async Task<List<CategoryDto>> HomeWorkCategoryList()
|
|
{
|
|
var res = await _userContext.Category
|
|
.Select(x => new CategoryDto()
|
|
{
|
|
Id = x.Id,
|
|
Name = x.CategoryName,
|
|
CategoryKey = x.CategoryKey,
|
|
KcalIndex = x.KcalIndex
|
|
})
|
|
.ToListAsync();
|
|
|
|
return res;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 星期列表
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public async Task<List<ComboBoxDto>> WeekList()
|
|
{
|
|
var res = await _userContext.Week
|
|
.Select(x => new ComboBoxDto()
|
|
{
|
|
Id = x.Id,
|
|
Name = x.Name
|
|
})
|
|
.ToListAsync();
|
|
|
|
return res;
|
|
}
|
|
}
|
|
}
|