using AI.Platform.Core;
using AI.Platform.Core.Entity.Media;
using AI.Platform.Page.Pages.Site.Model;
using Dm.util;
using Microsoft.AspNetCore.Components;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Text;
using System.Text.Json;
namespace AI.Platform.Page.Pages.Media.Model
{
public class MediaModel
{
}
///
/// 用于新增/修改广告时传递弹窗数据
///
public class MediaDialogModel: IValidatableObject
{
///
/// 表id
///
public long? Id { get; set; }
///
/// 弹窗类型:1:新增;2:编辑;3:删除
///
public int Type { get; set; }
///
/// 集团ID
///
public long GroupID { get; set; }
///
/// 站点ID
///
[Required(ErrorMessage = "请绑定油站")]
public long BusinessUnitID { get; set; }
///
/// 文件名
///
[Required(ErrorMessage = "请上传广告以获取文件名")]
public string FileName { set; get; }
///
/// 文件后缀
///
public string FileExtension { set; get; }
///
/// guid文件名
///
public string GuidFileName { set; get; }
///
/// 保存到服务器的地址
///
public string SavePath { set; get; }
///
/// 文件开始播放时间
///
[Required(ErrorMessage = "请设置广告播放时段")]
public int? StartTime { set; get; }
///
/// 文件结束播放时间
///
[Required(ErrorMessage = "请设置广告播放时段")]
public int? EndTime { set; get; }
///
/// 文件生效时间
///
[Required(ErrorMessage = "请设置广告策略有效时间段")]
public DateTime? EffecitiveTime { set; get; }
///
/// 文件失效时间
///
public DateTime? FailureTime { set; get; }
///
/// 文件油机状态
///
[Required(ErrorMessage = "请选择播放该广告的油机状态")]
public List MachineStateList { set; get; } = new List();
///
/// 文件广告状态 0:禁用;1:可用
///
[Required(ErrorMessage = "请设置广告状态")]
public int MediaState { set; get; }
///
/// 文件上传人
///
public string MediaUploader { set; get; } = Global.CurrentUser.NickName;
///
/// 备注
///
public string Remark { set; get; }
///
/// 可选择站点
///
public List siteInfos { set; get; }
public MediaEntity ToCompany()
{
var media = new MediaEntity()
{
LocalPath = SavePath,
GroupId = this.GroupID,
BusinessUnitId = this.BusinessUnitID,
FileName = FileName,
FileExtension = this.FileExtension,
GuidFileName = this.GuidFileName,
StartTime = this.StartTime ?? 0,
EndTime = this.EndTime ?? 0,
EffectiveTime = this.EffecitiveTime ?? DateTime.Now,
FailureTime = this.FailureTime ?? DateTime.Now,
MachineState = JsonSerializer.Serialize(getMachineStateList()),
MediaState = this.MediaState,
Uploader = this.MediaUploader ?? "",
CreateTime = DateTime.Now,
EditTime = DateTime.Now,
Remark = this.Remark
};
if(this.Id != null) media.Id = (long)Id;
return media;
}
///
/// 获取油机状态列表,为空则返回所有状态
///
///
public List getMachineStateList()
{
if (MachineStateList.IsNullOrEmpty())
{
return getAllMachineStateList();
}
return MachineStateList;
}
///
/// 获取所有油枪状态
///
///
public List getAllMachineStateList()
{
return new List
{
"idle","lock","offline","lift","authorised","start","fueling"
};
}
public IEnumerable Validate(ValidationContext validationContext)
{
if (MachineStateList.IsNullOrEmpty())
{
yield return new ValidationResult("请选择播放该广告的油机状态", new[] { nameof(MachineStateList) });
}
//if(MediaState == -1)
//{
// yield return new ValidationResult("请设置广告状态", new[] { nameof(MediaState) });
//}
if (BusinessUnitID <= 0)
{
yield return new ValidationResult("请选择下发油站", new[] { nameof(BusinessUnitID) });
}
}
}
///
/// 用于显示广告列表数据
///
public class MediaInfoModel
{
///
/// 表id
///
public long? Id { get; set; }
///
/// 集团ID
///
public long GroupID { get; set; }
///
/// 站点ID
///
public long BusinessUnitID { get; set; }
///
/// 站名
///
public string SiteName { set; get; }
///
/// 文件名
///
public string FileName { set; get; }
///
/// 文件后缀
///
public string FileExtension { set; get; }
///
/// guid文件名
///
public string GuidFileName { set; get; }
///
/// 保存到服务器的地址
///
public string SavePath { set; get; }
///
/// 文件开始播放时间
///
public int? StartTime { set; get; }
///
/// 文件结束播放时间
///
public int? EndTime { set; get; }
///
/// 文件生效时间
///
public DateTime EffecitiveTime { set; get; }
///
/// 文件失效时间
///
public DateTime FailureTime { set; get; }
///
/// 修改时间
///
public DateTime? EditTime { set; get; }
///
/// 文件油机状态
///
public string MachineStateList { set; get; }
///
/// 文件广告状态 0:禁用;1:可用
///
public int MediaState { set; get; }
///
/// 文件上传人
///
public string MediaUploader { set; get; } = Global.CurrentUser.NickName;
///
/// 备注
///
public string Remark { set; get; }
public MediaType getType()
{
if(".mp4".equals(FileExtension) || ".MP4".equals(FileExtension))
{
return MediaType.VIDEO;
} else
{
return MediaType.IMAGE;
}
}
}
public enum MediaType
{
VIDEO,IMAGE
}
///
/// 用于预览窗口
///
public class PreviewInfo
{
///
/// 1:视频;2:图片
///
public MediaType Type { set; get; }
///
/// 地址
///
public string Path { set; get; }
}
}