Files
Backend-Api/ServiceHost/Areas/Admin/Pages/Company/FilePage/Index.cshtml.cs
2025-04-26 11:01:08 +03:30

626 lines
19 KiB
C#

using System.Transactions;
using _0_Framework.Application;
using CompanyManagement.Infrastructure.Excel.CaseManagement;
using CompanyManagment.App.Contracts.Board;
using CompanyManagment.App.Contracts.Contact2;
using CompanyManagment.App.Contracts.Evidence;
using CompanyManagment.App.Contracts.EvidenceDetail;
using CompanyManagment.App.Contracts.File1;
using CompanyManagment.App.Contracts.FileTiming;
using CompanyManagment.App.Contracts.FileTitle;
using CompanyManagment.App.Contracts.MasterPenaltyTitle;
using CompanyManagment.App.Contracts.MasterPetition;
using CompanyManagment.App.Contracts.MasterWorkHistory;
using CompanyManagment.App.Contracts.PenaltyTitle;
using CompanyManagment.App.Contracts.Petition;
using CompanyManagment.App.Contracts.ProceedingSession;
using CompanyManagment.App.Contracts.Reward;
using CompanyManagment.App.Contracts.WorkHistory;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.Extensions.Configuration.UserSecrets;
using ArchiveNo_FileClass_UserIdList = CompanyManagment.App.Contracts.File1.ArchiveNo_FileClass_UserIdList;
using Users = CompanyManagment.App.Contracts.File1.Users;
//using CompanyManagment.App.Contracts.FileAlert;
namespace ServiceHost.Areas.Admin.Pages.Company.FilePage;
public class IndexModel : PageModel
{
private readonly IBoardApplication _boardApplication;
private readonly IContactApplication2 _contactApplication;
private readonly IEvidenceApplication _evidenceApplication;
private readonly IEvidenceDetailApplication _evidenceDetailApplication;
private readonly IFileApplication _fileApplication;
private readonly IFileTimingApplication _fileTimingApplication;
private readonly IFileTitleApplication _fileTitleApplication;
private readonly IMasterPenaltyTitleApplication _masterPenaltyTitleApplication;
private readonly IMasterPetitionApplication _masterPetitionApplication;
private readonly IMasterWorkHistoryApplication _masterWorkHistoryApplication;
private readonly IPenaltyTitleApplication _penaltyTitleApplication;
private readonly IPetitionApplication _petitionApplication;
private readonly IProceedingSessionApplication _proceedingSessionApplication;
private readonly IWorkHistoryApplication _workHistoryApplication;
public FileSearchModel fileSearchModel;
public List<FileViewModel> viewModels;
public int PageIndex = 0;
public IndexModel(
IFileApplication fileApplication,
IBoardApplication boardApplication,
IPetitionApplication petitionApplication,
IWorkHistoryApplication workHistoryApplication,
IPenaltyTitleApplication penaltyTitleApplication,
IProceedingSessionApplication proceedingSessionApplication,
IMasterPetitionApplication masterPetitionApplication,
IMasterWorkHistoryApplication masterWorkHistoryApplication,
IMasterPenaltyTitleApplication masterPenaltyTitleApplication,
IEvidenceApplication evidenceApplication,
IEvidenceDetailApplication evidenceDetailApplication,
IFileTitleApplication fileTitleApplication,
IFileTimingApplication fileTimingApplication,
IContactApplication2 contactApplication
)
{
_fileApplication = fileApplication;
_boardApplication = boardApplication;
_petitionApplication = petitionApplication;
_workHistoryApplication = workHistoryApplication;
_penaltyTitleApplication = penaltyTitleApplication;
_proceedingSessionApplication = proceedingSessionApplication;
_masterPetitionApplication = masterPetitionApplication;
_masterWorkHistoryApplication = masterWorkHistoryApplication;
_masterPenaltyTitleApplication = masterPenaltyTitleApplication;
_evidenceApplication = evidenceApplication;
_evidenceDetailApplication = evidenceDetailApplication;
_fileTitleApplication = fileTitleApplication;
_fileTimingApplication = fileTimingApplication;
_contactApplication = contactApplication;
}
public IActionResult OnGet()
{
return Page();
}
public async Task<IActionResult> OnGetLoadDataAjax(GetFileSearchModel searchModel)
{
var resultData = await _fileApplication.GetList(searchModel);
return new JsonResult(new
{
success = true,
data = resultData,
pageIndex = resultData.Count()
});
}
public IActionResult OnGetCreateFile()
{
var archiveNo = _fileApplication.FindLastArchiveNumber();
var createFile = new CreateFile
{
ArchiveNo = archiveNo + 1,
Employees = _fileApplication.GetAllEmploees(false),
Employers = _fileApplication.GetAllEmployers(false),
Contacts = _contactApplication.GetAllContact()
};
return Partial("./CreateFile", createFile);
}
public IActionResult OnPostCreateFile(CreateFile command)
{
var result = _fileApplication.Create(command);
return new JsonResult(result);
}
public IActionResult OnGetEditFile(long id = -1)
{
if (id == -1)
{
var file = _fileApplication.Search(new FileSearchModel()).FirstOrDefault();
if (file != null) id = file.Id;
}
var editFile = _fileApplication.GetDetails(id);
var diagnosisBoard =
_boardApplication.GetDetails(editFile.Id, 1)
?? new EditBoard { File_Id = editFile.Id, BoardType_Id = 1 };
var diagnosisPS = new List<EditProceedingSession> { new() };
if (diagnosisBoard.Id != 0)
{
var PsSearchModel = new ProceedingSessionSearchModel { Board_Id = diagnosisBoard.Id, Status = 0 };
diagnosisPS = _proceedingSessionApplication.Search(PsSearchModel);
if (diagnosisPS.Count == 0)
diagnosisPS.Add(new EditProceedingSession());
}
//diagnosisPS =
// diagnosisPS.Count != 0
// ? diagnosisPS
// : new List<EditProceedingSession> { new EditProceedingSession() };
var diagnosisPetition = _petitionApplication.GetDetails(editFile.Id, 1);
var disputeResolutionBoard =
_boardApplication.GetDetails(editFile.Id, 2)
?? new EditBoard { File_Id = editFile.Id, BoardType_Id = 2 };
var disputeResolutionPS = new List<EditProceedingSession> { new() };
if (disputeResolutionBoard.Id != 0)
{
var PsSearchModel = new ProceedingSessionSearchModel { Board_Id = disputeResolutionBoard.Id };
disputeResolutionPS = _proceedingSessionApplication.Search(PsSearchModel);
if (disputeResolutionPS.Count == 0)
disputeResolutionPS.Add(new EditProceedingSession());
}
//disputeResolutionPS =
// disputeResolutionPS.Count != 0
// ? disputeResolutionPS
// : new List<EditProceedingSession> { new EditProceedingSession() };
var disputeResolutionPetition = _petitionApplication.GetDetails(editFile.Id, 2);
editFile.createDiagnosisBoard = diagnosisBoard;
editFile.createDiagnosisPS = diagnosisPS;
editFile.createDiagnosisPetition = diagnosisPetition;
editFile.createDisputeResolutionBoard = disputeResolutionBoard;
editFile.createDisputeResolutionPS = disputeResolutionPS;
editFile.createDisputeResolutionPetition = disputeResolutionPetition;
editFile.Employees = _fileApplication.GetAllEmploees();
editFile.Employers = _fileApplication.GetAllEmployers();
return Partial("Edit", editFile);
}
public IActionResult OnPostEditFile(EditFile command)
{
using var transaction = new TransactionScope();
var fileResult = _fileApplication.Edit(command);
if (!fileResult.IsSuccedded)
return new JsonResult(fileResult);
OperationResult diagnosisBoardResult;
if (command.createDiagnosisBoard.Id == 0)
diagnosisBoardResult = _boardApplication.Create(command.createDiagnosisBoard);
else
diagnosisBoardResult = _boardApplication.Edit(command.createDiagnosisBoard);
if (!diagnosisBoardResult.IsSuccedded)
return new JsonResult(diagnosisBoardResult);
if (command.createDiagnosisPS is { Count: > 0 })
{
OperationResult diagnosisPs = _proceedingSessionApplication.CreateProceedingSessions(
command.createDiagnosisPS,
diagnosisBoardResult.SendId
);
if (!diagnosisPs.IsSuccedded)
return new JsonResult(diagnosisPs);
}
OperationResult disputeBoardResult;
if (command.createDisputeResolutionBoard.Id == 0)
disputeBoardResult = _boardApplication.Create(command.createDisputeResolutionBoard);
else
disputeBoardResult = _boardApplication.Edit(command.createDisputeResolutionBoard);
if (!disputeBoardResult.IsSuccedded)
return new JsonResult(disputeBoardResult);
if (command.createDisputeResolutionPS is { Count: > 0 })
{
OperationResult disputePs = _proceedingSessionApplication.CreateProceedingSessions(
command.createDisputeResolutionPS,
disputeBoardResult.SendId
);
if (!disputePs.IsSuccedded)
return new JsonResult(disputePs);
}
transaction.Complete();
return new JsonResult(disputeBoardResult);
}
public IActionResult OnGetCreateOrEditPetition(long fileId, int boardTypeId)
{
var file = _fileApplication.GetDetails(fileId);
var petition = _petitionApplication.GetDetails(fileId, boardTypeId) ?? new EditPetition();
var workHistories = _workHistoryApplication.Search(petition.Id);
workHistories =
workHistories.Count != 0
? workHistories
: new List<EditWorkHistory> { new() };
var PenaltyTitles = _penaltyTitleApplication.Search(petition.Id);
PenaltyTitles =
PenaltyTitles.Count != 0
? PenaltyTitles
: new List<EditPenaltyTitle> { new() };
petition.File_Id = fileId;
petition.BoardType_Id = boardTypeId;
petition.FileData = file;
petition.CreateWorkHistory = workHistories;
petition.CreatePenaltyTitle = PenaltyTitles;
return Partial("./CreateOrEditPetition", petition);
}
public IActionResult OnPostCreateOrEditPetition(EditPetition command)
{
var petitionResult = new OperationResult();
if (command.Id == 0)
petitionResult = _petitionApplication.Create(command);
else
petitionResult = _petitionApplication.Edit(command);
if (!petitionResult.IsSuccedded)
return new JsonResult(petitionResult);
var workResult = _workHistoryApplication.CreateWorkHistories(
command.CreateWorkHistory,
petitionResult.SendId
);
if (!workResult.IsSuccedded)
return new JsonResult(workResult);
var penaltyResult = _penaltyTitleApplication.CreatePenaltyTitles(
command.CreatePenaltyTitle,
petitionResult.SendId
);
if (!penaltyResult.IsSuccedded)
return new JsonResult(penaltyResult);
return new JsonResult(penaltyResult);
}
public IActionResult OnGetCreateOrEditMasterPetition(long fileId, int boardTypeId)
{
var file = _fileApplication.GetDetails(fileId);
var masterPetition = _masterPetitionApplication.GetDetails(fileId, boardTypeId) ?? new EditMasterPetition();
var workHistories = _masterWorkHistoryApplication.Search(masterPetition.Id);
workHistories =
workHistories.Count != 0
? workHistories
: new List<EditMasterWorkHistory> { new() };
var PenaltyTitles = _masterPenaltyTitleApplication.Search(masterPetition.Id);
PenaltyTitles =
PenaltyTitles.Count != 0
? PenaltyTitles
: new List<EditMasterPenaltyTitle> { new() };
masterPetition.File_Id = fileId;
masterPetition.BoardType_Id = boardTypeId;
masterPetition.FileData = file;
masterPetition.CreateMasterWorkHistory = workHistories;
masterPetition.CreateMasterPenaltyTitle = PenaltyTitles;
return Partial("./CreateOrEditMasterPetition", masterPetition);
}
public IActionResult OnPostCreateOrEditMasterPetition(EditMasterPetition command)
{
var masterPetitionResult = new OperationResult();
//if (!ModelState.IsValid)
//{
// return BadRequest();
//}
//var result = _fileApplication.Edit(command.FileData);
//if (!result.IsSuccedded)
// return new JsonResult(result);
if (command.Id == 0)
masterPetitionResult = _masterPetitionApplication.Create(command);
else
masterPetitionResult = _masterPetitionApplication.Edit(command);
if (!masterPetitionResult.IsSuccedded)
return new JsonResult(masterPetitionResult);
var workResult = _masterWorkHistoryApplication.CreateMasterWorkHistories(
command.CreateMasterWorkHistory,
masterPetitionResult.SendId
);
if (!workResult.IsSuccedded)
return new JsonResult(workResult);
var penaltyResult = _masterPenaltyTitleApplication.CreateMasterPenaltyTitles(
command.CreateMasterPenaltyTitle,
masterPetitionResult.SendId
);
if (!penaltyResult.IsSuccedded)
return new JsonResult(penaltyResult);
return new JsonResult(penaltyResult);
}
public IActionResult OnGetCreateOrEditEvidence(long fileId, int boardTypeId)
{
var file = _fileApplication.GetDetails(fileId);
var evidence = _evidenceApplication.GetDetails(fileId, boardTypeId) ?? new EditEvidence();
var evidenceDetails = _evidenceDetailApplication.Search(evidence.Id);
evidenceDetails =
evidenceDetails.Count != 0
? evidenceDetails
: new List<EditEvidenceDetail> { new() };
evidence.File_Id = fileId;
evidence.BoardType_Id = boardTypeId;
evidence.FileData = file;
evidence.CreateEvidenceDetail = evidenceDetails;
return Partial("./CreateOrEditEvidence", evidence);
}
public IActionResult OnPostCreateOrEditEvidence(EditEvidence command)
{
var evidenceResult = new OperationResult();
//if (!ModelState.IsValid)
//{
// return BadRequest();
//}
//var result = _fileApplication.Edit(command.FileData);
//if (!result.IsSuccedded)
// return new JsonResult(result);
if (command.Id == 0)
evidenceResult = _evidenceApplication.Create(command);
else
evidenceResult = _evidenceApplication.Edit(command);
if (!evidenceResult.IsSuccedded)
return new JsonResult(evidenceResult);
var evidenceDetail = _evidenceDetailApplication.CreateEvidenceDetail(
command.CreateEvidenceDetail,
evidenceResult.SendId
);
if (!evidenceDetail.IsSuccedded)
return new JsonResult(evidenceDetail);
return new JsonResult(evidenceDetail);
}
public IActionResult OnGetCreateOrEditFileTitle(string type)
{
var EditFileTitle = new EditFileTitle();
EditFileTitle.FileTitlesList = _fileTitleApplication.Search(new FileTitleSearchModel { Type = type });
return Partial("./CreateOrEditFileTitle", EditFileTitle);
}
public IActionResult OnPostCreateOrEditFileTitle(EditFileTitle command)
{
var result = new OperationResult();
if (_fileTitleApplication.Search(new FileTitleSearchModel { Title = command.Title, Type = command.Type })
.Count != 0)
{
result.Failed("این عنوان قبلا ثبت شده است");
}
else
{
if (command.Id == 0)
{
result = _fileTitleApplication.Create(command);
}
else
{
var fileTitle = _fileTitleApplication.Search(new FileTitleSearchModel { Id = command.Id })
.FirstOrDefault();
fileTitle.Title = command.Title;
result = _fileTitleApplication.Edit(fileTitle);
}
}
var res = new
{
result,
type = command.Type
};
return new JsonResult(res);
}
public IActionResult OnGetCreateOrEditFileTiming(string type)
{
var FileTimings = _fileTimingApplication.Search(new FileTimingSearchModel());
if (FileTimings.Count == 0)
FileTimings = Enumerable.Repeat(new EditFileTiming(), 6).ToList();
return Partial("./CreateOrEditFileTiming", FileTimings);
}
public IActionResult OnPostCreateOrEditFileTiming(List<EditFileTiming> command)
{
var result = new OperationResult();
foreach (var item in command)
if (item.Id == 0)
_fileTimingApplication.Create(item);
else
_fileTimingApplication.Edit(item);
return new JsonResult(result.Succcedded());
}
public IActionResult OnGetFileSummary(long id)
{
var summary = _fileApplication.GetFileSummary(id);
return Partial("FileSummary", summary);
}
public JsonResult OnPostCheckUniqueArchiveNo(string archiveNo)
{
var sModel = new FileSearchModel { ArchiveNo = archiveNo };
var vModel = _fileApplication.Search(sModel);
return new JsonResult(
new
{
stat = vModel.Count() == 0 ? true : false,
message = vModel == null ? "" : "شماره بایگانی تکراری است"
}
);
}
public JsonResult OnPostCheckUniqueFileClass(string fileClass)
{
var sModel = new FileSearchModel { FileClass = fileClass };
var vModel = _fileApplication.Search(sModel);
return new JsonResult(
new
{
stat = vModel.Count() == 0 ? true : false,
message = vModel == null ? "" : "کلاسه پرونده تکراری است"
}
);
}
public JsonResult OnPostRemoveMasterPetition(long id)
{
_masterPenaltyTitleApplication.RemoveMasterPenaltyTitles(id);
_masterWorkHistoryApplication.RemoveMasterWorkHistories(id);
var result = _masterPetitionApplication.Remove(id);
return new JsonResult(result);
}
public JsonResult OnGetGetFileTitles(string type)
{
var fileTitlesList = new List<string>();
if (type == "contact")
fileTitlesList = _contactApplication.GetAllContact().Select(x => x.NameContact).ToList();
else
fileTitlesList = _fileTitleApplication.Search(new FileTitleSearchModel { Type = type }).Select(x => x.Title)
.ToList();
return new JsonResult(fileTitlesList);
}
public JsonResult OnPostRemoveFileTitle(long id)
{
var result = _fileTitleApplication.Remove(id);
return new JsonResult(result);
}
public JsonResult OnPostRemoveEvidence(long id)
{
_evidenceDetailApplication.RemoveEvidenceDetails(id);
var result = _evidenceApplication.Remove(id);
return new JsonResult(result);
}
public JsonResult OnPostSetFileStatus(long id, int status)
{
var result = new OperationResult();
var file = _fileApplication.GetDetails(id);
file.Status = status;
result = _fileApplication.Edit(file);
switch (file.Status)
{
case 1:
//file.Status = 2;
//result = _fileApplication.Edit(file);
result.Message = "پرونده با موفقیت فعال شد";
break;
case 2:
//file.Status = 1;
//result = _fileApplication.Edit(file);
result.Message = "پرونده با موفقیت غیرفعال شد";
break;
case 3:
//file.Status = 1;
//result = _fileApplication.Edit(file);
result.Message = "پرونده با موفقیت از بایگانی خارج شد";
break;
}
return new JsonResult(result);
}
#region Mahan
public async Task<IActionResult> OnGetExcelFileDetails()
{
var data = await _fileApplication.GetExcelDetails();
var excelBytes = CaseManagementExcelGenerator.GenerateCheckoutTempExcelInfo(data);
return File(excelBytes,
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
$"پرونده.xlsx");
}
public async Task<IActionResult> OnGetClassFilesList()
{
var result = await _fileApplication.GetAllClassFiles();
return new JsonResult(result);
}
public async Task<IActionResult> OnGetArchiveNoList()
{
var result = await _fileApplication.GetAllArchiveNo();
return new JsonResult(result);
}
public async Task<IActionResult> OnGetClientOrLitigant()
{
var result = await _fileApplication.GetClientAndLitigation();
return new JsonResult(result);
}
public async Task<IActionResult> OnGetClientDetails(long fileId)
{
var command = await _fileApplication.GetClientDetails(fileId);
return Partial("ModalEmployeeDetail", command);
}
#endregion
}