using Furion.DatabaseAccessor;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FlexJobApi.Core
{
///
/// 任务信息
///
public class TaskInfo : CommonEntity, IEntityTypeBuilder
{
public TaskInfo()
{
Benefits = [];
CredentialLimits = [];
TaskUserCollects = [];
}
///
/// 企业Id
///
public Guid EnterpriseId { get; set; }
///
/// 企业
///
public Enterprise Enterprise { get; set; }
///
/// 任务单号
///
public string Code { get; set; }
///
/// 任务名称
///
[Required]
public string Name { get; set; }
///
/// 结算周期
///
public EnumBillingMethod BillingMethod { get; set; }
///
/// 服务费
///
public decimal ServiceFee { get; set; }
///
/// 结算方式
///
public EnumSettlementCycle SettlementCycle { get; set; }
///
/// 福利
///
public List Benefits { get; set; }
///
/// 年龄范围最小
///
public int AgeMinLimit { get; set; }
///
/// 年龄范围大
///
public int AgeMaxLimit { get; set; }
///
/// 性别要求
///
public EnumUserGender GenderLimit { get; set; }
///
/// 资格证书
///
public List CredentialLimits { get; set; }
///
/// 任务地点所属省份编号
///
public string ProvinceCode { get; set; }
///
/// 任务地点所属省份
///
public DictionaryData Province { get; set; }
///
/// 任务地点所属城市编号
///
public string CityCode { get; set; }
///
/// 任务地点所属城市
///
public DictionaryData City { get; set; }
///
/// 任务地点名称
///
public string AddressName { get; set; }
///
/// 任务地点详细地址
///
public string AddressDetail { get; set; }
///
/// 经度
///
[Column(TypeName = "decimal(18,6)")]
public decimal? Longitude { get; set; }
///
/// 纬度
///
[Column(TypeName = "decimal(18,6)")]
public decimal? Latitude { get; set; }
///
/// 任务开始时间
///
public DateTime BeginTime { get; set; }
///
/// 任务结束时间
///
public DateTime EndTime { get; set; }
///
/// 任务状态
///
public EnumTaskStatus Status { get; set; }
///
/// 发布状态
///
public EnumTaskReleaseStatus ReleaseStatus { get; set; }
///
/// 验收状态
///
public EnumTaskCheckReceiveStatus? CheckReceiveStatus { get; set; }
///
/// 验收完成时间
///
public DateTime? CheckReceiveTime { get; set; }
///
/// 最近提交时间
///
public DateTime? LastSubmitTime { get; set; }
///
/// 最近验收时间
///
public DateTime? LastCheckReceiveTime { get; set; }
///
/// 结算单状态
///
public EnumTaskSettlementOrderStatus? SettlementOrderStatus { get; set; }
///
/// 结算单名称
///
public string SettlementOrderName { get; set; }
///
/// 结算单地址
///
public string SettlementOrderUrl { get; set; }
///
/// 结算单上传时间
///
public DateTime? SettlementOrderTime { get; set; }
///
/// 结算状态
///
public EnumTaskSettlementStatus? SettlementStatus { get; set; }
///
/// 结算金额
///
public decimal? SettlementAmount { get; set; }
///
/// 实发金额
///
public decimal? ActualSettlementAmount { get; set; }
///
/// 结算人数
///
public int SettlementUserCount { get; set; }
///
/// 结算操作人Id
///
public Guid? SettlementOperatorUserId { get; set; }
///
/// 结算操作人
///
public User SettlementOperatorUser { get; set; }
///
/// 结算开始时间
///
public DateTime? SettlementStartTime { get; set; }
///
/// 结算时间
///
public DateTime? SettlementTime { get; set; }
///
/// 结算备注
///
public string SettlementRemark { get; set; }
///
/// 推荐状态
///
public EnumTaskRecommendStatus RecommendStatus { get; set; }
///
/// 推荐时间
///
public DateTime? RecommendTime { get; set; }
///
/// 用户
///
public List TaskInfoUsers { get; set; }
///
/// 谁收藏此任务
///
public List TaskUserCollects { get; set; }
public void Configure(EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator)
{
entityBuilder
.HasOne(it => it.Province)
.WithMany()
.HasForeignKey(it => it.ProvinceCode)
.HasPrincipalKey(it => it.Code)
.OnDelete(DeleteBehavior.Restrict);
entityBuilder
.HasOne(it => it.City)
.WithMany()
.HasForeignKey(it => it.CityCode)
.HasPrincipalKey(it => it.Code)
.OnDelete(DeleteBehavior.Restrict);
}
}
}