using Microsoft.AspNetCore.Mvc;
using System.Net;
using System.Net.Http.Headers;
using Microsoft.Extensions.Hosting.Internal;
using Microsoft.AspNetCore.Http.Extensions;
using IStation.Untity;
using Furion.DynamicApiController;
using System.ComponentModel.DataAnnotations;
using Mapster;
using Microsoft.AspNetCore.Http;
namespace IStation.Application
{
///
/// RepairRequestForm
///
[Route("Repair/RepairRequestForm/Mobile")]
[ApiDescriptionSettings("Repair", Name = "报修单(手机)", Order = 999)]
public class RepairRequestForm_MobileController : IDynamicApiController
{
private readonly IHttpContextAccessor _httpContextAccessor;
///
///
///
public RepairRequestForm_MobileController(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
#region Insert
///
/// 插入一条 (手机)
///
[Route("Insert@V1.0")]
[HttpPost]
public long Insert([FromForm] AddRepairRequestFormMobileInput input)
{
if (input == null)
return default;
var model = input.Adapt();
var fileList = new List();
var request = _httpContextAccessor.HttpContext.Request;
if (request.Form.Files != null && request.Form.Files.Count > 0)
{
for (int i = 0; i < request.Form.Files.Count; i++)
{
var uploadFile = request.Form.Files[i];
var file = new Model.RepairRequestFile();
file.CorpID = input.CorpID;
file.FileSuffix = Path.GetExtension(uploadFile.FileName);
file.FileName = Path.GetFileNameWithoutExtension(uploadFile.FileName);
file.FileFormat = FileHelper.GetFormat(file.FileSuffix);
file.StorageHouse = Constant.RequestStorageHouse;
file.StorageCode = FileHelper.UploadSubFile(Constant.RequestStorageHouse, uploadFile.OpenReadStream(), Path.GetExtension(uploadFile.FileName));
file.SortCode = i + 1;
fileList.Add(file);
}
}
var id = new Service.RepairRequestForm().Insert(model, fileList);
return id;
}
///
/// 上传文件 (手机)
///
[Route("UploadFile@V1.0")]
[HttpPost]
public bool UploadFile([FromForm] UploadRepairRequestFormFileMobileInput input)
{
if (input == null)
return false;
var request = _httpContextAccessor.HttpContext.Request;
if (request.Form.Files == null || request.Form.Files.Count < 1)
return false;
var fileList = new List();
for (int i = 0; i < request.Form.Files.Count; i++)
{
var uploadFile = request.Form.Files[i];
var file = new Model.RepairRequestFile();
file.CorpID = input.CorpID;
file.FormID = input.FormID;
file.FileSuffix = Path.GetExtension(uploadFile.FileName);
file.FileName = Path.GetFileNameWithoutExtension(uploadFile.FileName);
file.FileFormat = FileHelper.GetFormat(file.FileSuffix);
file.StorageHouse = Constant.RequestStorageHouse;
file.StorageCode = FileHelper.UploadSubFile(Constant.RequestStorageHouse, uploadFile.OpenReadStream(), Path.GetExtension(uploadFile.FileName));
file.SortCode = i + 1;
fileList.Add(file);
}
var service = new Service.RepairRequestFile();
var bol= service.Inserts(fileList);
return bol;
}
#endregion
///
/// 获取我的报修分页列表(手机)
///
[Route("GetMyPageList@V1.0")]
[HttpGet]
public PageListOutput GetMyPageList([FromQuery][Required] GetMyRepairRequestFormPageListMobileInput input)
{
int total = 0;
var list = new Service.RepairRequestForm().GetMyFluzzyPageList
(input.CorpID,UserManager.UserID, input.FormStatus,input.Urgency,input.StartTime,input.EndTime,input.PageIndex,input.PageSize,ref total);
if (list == null || list.Count < 1)
return new PageListOutput() { Total=total,List=null};
var productList = new Service.Product().GetByIds(input.CorpID,list.Select(x=>x.ProductID).Distinct().ToList());
var vmList = new List();
foreach (var item in list)
{
var product = productList?.Find(t => t.ID == item.ProductID) ;
var vm = new MyRepairRequestFormMobileDto(item,product?.Name);
vmList.Add(vm);
}
return new PageListOutput() { Total=total,List=vmList};
}
#region 待受理
///
/// 获取我的待受理报修分页列表(手机)
///
[Route("GetMyPendingPageList@V1.0")]
[HttpGet]
public PageListOutput GetMyPendingPageList([FromQuery][Required] GetMyRepairRequestFormPendingPageListMobileInput input)
{
int total = 0;
var list = new Service.RepairRequestForm().GetMyFluzzyPageList
(input.CorpID, UserManager.UserID, Model.Repair.eRequestStatus.Pending, input.Urgency, input.StartTime, input.EndTime, input.PageIndex, input.PageSize, ref total);
if (list == null || list.Count < 1)
return new PageListOutput() { Total = total, List = null };
var productList = new Service.Product().GetByIds(input.CorpID, list.Select(x => x.ProductID).Distinct().ToList());
var vmList = new List();
foreach (var item in list)
{
var product = productList?.Find(t => t.ID == item.ProductID);
var vm = new MyRepairRequestFormPendingMobileDto(item, product?.Name);
vmList.Add(vm);
}
return new PageListOutput() { Total = total, List = vmList };
}
///
/// 通过 ID 获取我的待受理详细信息(手机)
///
[Route("GetMyPendingDetailByID@V1.0")]
[HttpGet]
public MyRepairRequestFormPendingDetailMobileDto GetMyPendingDetailByID([FromQuery][Required] IDUnderCorpInput input)
{
var model = new Service.RepairRequestForm().GetByID(input.CorpID, input.ID);
if (model == null)
return default;
if (model.FormStatus != Model.Repair.eRequestStatus.Pending)
return default;
var product = new Service.Product().GetByID(input.CorpID, model.ProductID);
var vm = new MyRepairRequestFormPendingDetailMobileDto(model, product);
var fileList = new Service.RepairRequestFile().GetByFormID(input.CorpID, model.ID);
if (fileList != null && fileList.Count > 0)
{
var vmFileList = new List();
foreach (var file in fileList)
{
var vmFile = new MyRepairRequestFilePendingMobileDto(file);
vmFile.StorageUrl = $"{FileHelper.GetRelatedFilePath(file.StorageHouse, file.StorageCode)}";
vmFileList.Add(vmFile);
}
vm.FileList = vmFileList;
}
return vm;
}
#endregion
#region 被驳回
///
/// 获取我的被驳回报修分页列表(手机)
///
[Route("GetMyRejectedPageList@V1.0")]
[HttpGet]
public PageListOutput GetMyRejectedPageList([FromQuery][Required] GetMyRepairRequestFormRejectedPageListMobileInput input)
{
int total = 0;
var list = new Service.RepairRequestForm().GetMyFluzzyPageList
(input.CorpID, UserManager.UserID, Model.Repair.eRequestStatus.Rejected, input.Urgency, input.StartTime, input.EndTime, input.PageIndex, input.PageSize, ref total);
if (list == null || list.Count < 1)
return new PageListOutput() { Total = total, List = null };
var productList = new Service.Product().GetByIds(input.CorpID, list.Select(x => x.ProductID).Distinct().ToList());
var vmList = new List();
foreach (var item in list)
{
var product = productList?.Find(t => t.ID == item.ProductID);
var vm = new MyRepairRequestFormRejectedMobileDto(item, product?.Name);
vmList.Add(vm);
}
return new PageListOutput() { Total = total, List = vmList };
}
///
/// 通过 ID 获取我的被驳回详细信息(手机)
///
[Route("GetMyRejectedDetailByID@V1.0")]
[HttpGet]
public MyRepairRequestFormRejectedDetailMobileDto GetMyRejectedDetailByID([FromQuery][Required] IDUnderCorpInput input)
{
var model = new Service.RepairRequestForm().GetByID(input.CorpID, input.ID);
if (model == null)
return default;
if (model.FormStatus != Model.Repair.eRequestStatus.Rejected)
return default;
var product = new Service.Product().GetByID(input.CorpID, model.ProductID);
var log = new Service.RepairRequestLog().GetByFormIDAndOperateType(input.CorpID,model.ID,Model.Repair.eRequestOperateType.Reject);
var vm = new MyRepairRequestFormRejectedDetailMobileDto(model, product?.Name);
if (log != null)
{
vm.RejectTime = log.OperateTime;
vm.RejectReason = log.OperateNote;
vm.RejectUserName = new Service.User().GetByID(log.OperateUserID)?.RealName;
}
return vm;
}
#endregion
#region 已受理
///
/// 获取我的已受理报修分页列表(手机)
///
[Route("GetMyAcceptedPageList@V1.0")]
[HttpGet]
public PageListOutput GetMyAcceptedPageList([FromQuery][Required] GetMyRepairRequestFormAcceptedPageListMobileInput input)
{
int total = 0;
var list = new Service.RepairRequestForm().GetMyFluzzyPageList
(input.CorpID, UserManager.UserID, Model.Repair.eRequestStatus.Accepted, input.Urgency, input.StartTime, input.EndTime, input.PageIndex, input.PageSize, ref total);
if (list == null || list.Count < 1)
return new PageListOutput() { Total = total, List = null };
var productList = new Service.Product().GetByIds(input.CorpID, list.Select(x => x.ProductID).Distinct().ToList());
var taskList = new Service.RepairTaskForm().GetByRequestIds(input.CorpID,list.Select(x=>x.ID).Distinct().ToList());
var vmList = new List();
foreach (var item in list)
{
var product = productList?.Find(t => t.ID == item.ProductID);
var task = taskList?.Where(x => x.RequestID == item.ID).OrderBy(x => x.CreateTime).LastOrDefault();
var vm = new MyRepairRequestFormAcceptedMobileDto(item, product?.Name,task);
vmList.Add(vm);
}
return new PageListOutput() { Total = total, List = vmList };
}
///
/// 通过 ID 获取我的已受理详细信息(手机)
///
[Route("GetMyAcceptedDetailByID@V1.0")]
[HttpGet]
public MyRepairRequestFormAcceptedDetailMobileDto GetMyAcceptedDetailByID([FromQuery][Required] IDUnderCorpInput input)
{
var model = new Service.RepairRequestForm().GetByID(input.CorpID, input.ID);
if (model == null)
return default;
if (model.FormStatus != Model.Repair.eRequestStatus.Accepted)
return default;
var product = new Service.Product().GetByID(input.CorpID, model.ProductID);
var logList = new Service.RepairRequestLog().GetByFormID(model.CorpID,model.ID);
var fileList = new Service.RepairRequestFile().GetByFormID(model.CorpID,model.ID);
var taskForm = new Service.RepairTaskForm().GetByRequestID(model.CorpID,model.ID)?.FirstOrDefault();
if (taskForm == null)
return default;
var taskLogList = new Service.RepairTaskLog().GetByFormID(taskForm.CorpID,taskForm.ID);
var taskLogFileList= new Service.RepairTaskLogFile().GetByFormID(taskForm.CorpID, taskForm.ID);
var vm = new MyRepairRequestFormAcceptedDetailMobileDto(model,product,logList,fileList,taskForm,taskLogList,taskLogFileList);
return vm;
}
#endregion
}
}