using AutoMapper;
using NPOI.SS.Formula.Functions;
using OASystem.Domain;
using OASystem.Domain.Dtos.Groups;
using OASystem.Domain.Dtos.System;
using OASystem.Domain.Entities.Groups;
using OASystem.Domain.ViewModels.Groups;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OASystem.Infrastructure.Repositories.Groups
{
///
/// 餐厅信息 仓储
///
public class RestaurantRepository : BaseRepository
{
private readonly IMapper _mapper;
private readonly JsonView _jsonView;
public RestaurantRepository(SqlSugarClient sqlSugar, IMapper mapper) : base(sqlSugar)
{
_mapper = mapper;
_jsonView = new JsonView() { Code = StatusCodes.Status400BadRequest, Msg = "操作失败" };
}
///
/// 基础数据源
///
///
public async Task InitAsync()
{
var groupData = await _sqlSugar
.Queryable()
.Where(x => x.IsDel == 0)
.OrderByDescending(x => x.Id)
.Select(x => new { Id = x.Id, GroupName = x.TeamName })
.ToListAsync();
var mealTypeData = new List() {
new { Id = 1, Name = "早餐", DefaultStartTime = "08:00" },
new { Id = 2, Name = "午餐", DefaultStartTime = "12:00" },
new { Id = 3, Name = "晚餐", DefaultStartTime = "18:00" }
};
_jsonView.Code = StatusCodes.Status200OK;
_jsonView.Msg = "操作成功!";
_jsonView.Data = new { groupData = groupData ,mealType = mealTypeData };
return _jsonView;
}
///
/// 详情
///
///
public async Task InfoAsync(int portType, int id)
{
if (!SharingStaticData.PortTypes.Contains(portType)) return new JsonView() { Code = StatusCodes.Status400BadRequest, Msg = "端口类型错误!" };
if (id < 1) return new JsonView() { Code = StatusCodes.Status400BadRequest, Msg = MsgTips.Id };
var info = await _sqlSugar.Queryable()
.Where(x => x.IsDel == 0 && x.Id == id)
.FirstAsync();
if (info == null) return new JsonView() { Code = StatusCodes.Status400BadRequest, Msg = "数据未填写!", Data = new { } };
var resData = _mapper.Map(info);
return new JsonView() { Code = StatusCodes.Status200OK, Msg = "操作成功!", Data = resData };
}
///
/// Item
///
///
public async Task ItemAsync(int portType, int groupId)
{
if (!SharingStaticData.PortTypes.Contains(portType)) return new JsonView() { Code = StatusCodes.Status400BadRequest, Msg = "端口类型错误!" };
if (groupId < 1) return new JsonView() { Code = StatusCodes.Status400BadRequest, Msg = MsgTips.DiId };
var infos = await _sqlSugar
.Queryable((pi, u) => new JoinQueryInfos(JoinType.Left, pi.CreateUserId == u.Id))
.Where((pi, u) => pi.IsDel == 0 && pi.GroupId == groupId)
.OrderByDescending((pi, u) => pi.Date)
.Select((pi, u) => new
{
pi.Id,
//pi.GroupId,
pi.Date,
pi.StartTime,
pi.EndTime,
Type = pi.Type == 1 ? "早餐" : pi.Type == 2 ? "午餐" : pi.Type == 3 ? "晚餐" : "其他",
pi.Name,
pi.Address,
pi.Tel,
pi.Remark
})
.OrderByDescending(x => x.Date)
.ToListAsync();
if (!infos.Any()) return new JsonView() { Code = StatusCodes.Status400BadRequest, Msg = "数据未填写!",Data = Array.Empty() };
return new JsonView() { Code = StatusCodes.Status200OK, Msg = "操作成功!", Data = infos };
}
///
/// 操作
///
///
public async Task OpAsync(RestaurantOpDto dto)
{
int status = dto.Status;
var info = _mapper.Map(dto);
info.CreateUserId = dto.CurrUserId;
if (status == 1)
{
//验重
var isNull = await _sqlSugar.Queryable().Where(x => x.IsDel == 0 && x.GroupId == info.GroupId && x.Name.Equals(info.Name)).FirstAsync();
if (isNull != null) return new JsonView() { Code = StatusCodes.Status400BadRequest, Msg = "该团组下该餐厅名称已存在,不可重复添加!", Data = new { } };
var infoId = await _sqlSugar.Insertable(info).ExecuteCommandAsync();
if (infoId < 1) return new JsonView() { Code = StatusCodes.Status400BadRequest, Msg = "添加失败!", Data = new { } };
}
else if (status == 2)
{
if (dto.Id < 1) return new JsonView() { Code = StatusCodes.Status400BadRequest, Msg = MsgTips.Id, Data = new { } };
var infoId = await _sqlSugar.Updateable(info).IgnoreColumns(x => new { x.DeleteTime, x.DeleteUserId, x.CreateUserId, x.CreateTime, x.IsDel }).ExecuteCommandAsync();
if (infoId < 1) return new JsonView() { Code = StatusCodes.Status400BadRequest, Msg = "修改失败!", Data = new { } };
}
else new JsonView() { Code = StatusCodes.Status400BadRequest, Msg = "请传入有效的Status!", Data = new { } };
return new JsonView() { Code = StatusCodes.Status200OK, Msg = "操作成功!", Data = new { } };
}
///
/// 操作
///
///
public async Task DelAsync(RestaurantDelDto dto)
{
int userId = dto.DeleteUserId;
var id = dto.Id;
if (userId < 1) return new JsonView() { Code = StatusCodes.Status400BadRequest, Msg = MsgTips.UserId, Data = new { } };
if (id < 1) return new JsonView() { Code = StatusCodes.Status400BadRequest, Msg = MsgTips.Id, Data = new { } };
var del = await _sqlSugar.Updateable()
.SetColumns(x => new Grp_RestaurantInfo() { DeleteUserId = userId, DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), IsDel = 1 })
.Where(x => x.Id == id)
.ExecuteCommandAsync();
if(del < 1) return new JsonView() { Code = StatusCodes.Status200OK, Msg = "删除失败!", Data = new { } };
return new JsonView() { Code = StatusCodes.Status200OK, Msg = "操作成功!", Data = new { } };
}
}
}