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 } }