using System.Collections.Generic; using System.Linq; using _0_Framework_b.InfraStructure; using _0_Framework_b.Application; using Company.Domain.File1; using CompanyManagment.App.Contracts.Employee; using CompanyManagment.App.Contracts.Employer; using CompanyManagment.App.Contracts.File1; namespace CompanyManagment.EFCore.Repository; public class FileRepository : RepositoryBase, IFileRepository { private readonly CompanyContext _context; public FileRepository(CompanyContext context) : base(context) { _context = context; } public EditFile GetDetails(long id) { return _context.Files.Select(x => new EditFile { Id = x.id, ArchiveNo = x.ArchiveNo, ClientVisitDate = x.ClientVisitDate.ToFarsi(), ProceederReference = x.ProceederReference, Reqester = x.Reqester, Summoned = x.Summoned, Client = x.Client, FileClass = x.FileClass, HasMandate = x.HasMandate, Description = x.Description, Status = x.Status }).FirstOrDefault(x => x.Id == id); } public List Search(FileSearchModel searchModel) { var query = _context.Files.Select(x => new FileViewModel { Id = x.id, ArchiveNo = x.ArchiveNo, ClientVisitDate = x.ClientVisitDate.ToFarsi(), ProceederReference = x.ProceederReference, Reqester = x.Reqester, Summoned = x.Summoned, Client = x.Client, FileClass = x.FileClass, HasMandate = x.HasMandate, Description = x.Description, Status = x.Status }); //var query = _context.Files // .Include(f => f.BoardsList) // .Include(f => f.PetitionsList) // .Include(f => f.EvidencesList) // .Include(f => f.MasterPetitionsList) // .Select(x => new // { // Id = x.id, // ArchiveNo = x.ArchiveNo, // ClientVisitDate = x.ClientVisitDate.ToFarsi(), // ProceederReference = x.ProceederReference, // Reqester = x.Reqester, // Summoned = x.Summoned, // Client = x.Client, // FileClass = x.FileClass, // HasMandate = x.HasMandate, // Description = x.Description, // Status = x.Status, // DiagnosisBoard = x.BoardsList.Where(b => b.BoardType.Id == 1).FirstOrDefault(), // DisputeResolutionBoard = x.BoardsList.Where(b => b.BoardType.Id == 2).FirstOrDefault(), // DiagnosisPetition = x.PetitionsList.Where(p => p.BoardType.Id == 1).FirstOrDefault(), // DisputeResolutionPetition = x.PetitionsList.Where(p => p.BoardType.Id == 2).FirstOrDefault(), // DiagnosisEvidence = x.EvidencesList.Where(e => e.BoardType_Id == 1).FirstOrDefault(), // DisputeResolutionEvidence = x.EvidencesList.Where(e => e.BoardType_Id == 2).FirstOrDefault(), // DiagnosisMasterPetition = x.MasterPetitionsList.Where(e => e.BoardType_Id == 1).FirstOrDefault(), // DisputeResolutionMasterPetition = x.MasterPetitionsList.Where(e => e.BoardType_Id == 1).FirstOrDefault(), // FirstDiagnosisPS = x.BoardsList.Where(b => b.BoardType.Id == 1).FirstOrDefault().ProceedingSessionsList.FirstOrDefault(), // LastDiagnosisPS = x.BoardsList.Where(b => b.BoardType.Id == 1).FirstOrDefault().ProceedingSessionsList.OrderBy(p => p.id).Skip(1).LastOrDefault(), // FirstDisputeResolutionPS = x.BoardsList.Where(b => b.BoardType.Id == 2).FirstOrDefault().ProceedingSessionsList.FirstOrDefault(), // LastDisputeResolutionPS = x.BoardsList.Where(b => b.BoardType.Id == 2).FirstOrDefault().ProceedingSessionsList.OrderBy(p => p.id).Skip(1).LastOrDefault(), // }); if (searchModel.Id != 0) { query = query.Where(x => x.Id == searchModel.Id); } //TODO if if (searchModel.ArchiveNo != null && int.Parse(searchModel.ArchiveNo) != -1) { query = query.Where(x => x.ArchiveNo == int.Parse(searchModel.ArchiveNo)); } if(!string.IsNullOrEmpty(searchModel.FileClass) && searchModel.FileClass != "-1") { query = query.Where(x => x.FileClass.Contains(searchModel.FileClass)); } if(searchModel.UserId != 0) { if (searchModel.Client == 0) query = query.Where(x => x.Reqester == searchModel.UserId || x.Summoned == searchModel.UserId); else if (searchModel.Client == 1) query = query.Where(x => x.Reqester == searchModel.UserId); else query = query.Where(x => x.Summoned == searchModel.UserId); } if(searchModel.Status != 0) { query = query.Where(x => x.Status == searchModel.Status); } return query.OrderByDescending(x => x.ArchiveNo).ToList(); //var res = query.OrderByDescending(x => x.ArchiveNo).ToList(); //var result = res.Select(x => new FileViewModel //{ // Id = x.Id, // ArchiveNo = x.ArchiveNo, // ClientVisitDate = x.ClientVisitDate, // ProceederReference = x.ProceederReference, // Reqester = x.Reqester, // Summoned = x.Summoned, // Client = x.Client, // FileClass = x.FileClass, // HasMandate = x.HasMandate, // Description = x.Description, // Status = x.Status, // DiagnosisBoard = x.DiagnosisBoard == null // ? new EditBoard() // : new EditBoard // { // Id = x.DiagnosisBoard.id, // BoardChairman = x.DiagnosisBoard.BoardChairman, // BoardType_Id = x.DiagnosisBoard.BoardType_Id, // Branch = x.DiagnosisBoard.Branch, // DisputeResolutionPetitionDate = x.DiagnosisBoard.DisputeResolutionPetitionDate.ToFarsi(), // ExpertReport = x.DiagnosisBoard.ExpertReport, // File_Id = x.DiagnosisBoard.File_Id // }, // DisputeResolutionBoard = x.DisputeResolutionBoard == null // ? new EditBoard() // : new EditBoard // { // Id = x.DisputeResolutionBoard.id, // BoardChairman = x.DisputeResolutionBoard.BoardChairman, // BoardType_Id = x.DisputeResolutionBoard.BoardType_Id, // Branch = x.DisputeResolutionBoard.Branch, // DisputeResolutionPetitionDate = x.DisputeResolutionBoard.DisputeResolutionPetitionDate.ToFarsi(), // ExpertReport = x.DisputeResolutionBoard.ExpertReport, // File_Id = x.DisputeResolutionBoard.File_Id // }, // DiagnosisPetition = x.DiagnosisPetition == null // ? new EditPetition() // : new EditPetition // { // Id = x.DiagnosisPetition.id, // BoardType_Id = x.DiagnosisPetition.BoardType_Id, // Description = x.DiagnosisPetition.Description, // File_Id = x.DiagnosisPetition.File_Id, // NotificationPetitionDate = x.DiagnosisPetition.NotificationPetitionDate.ToFarsi(), // PetitionIssuanceDate = x.DiagnosisPetition.PetitionIssuanceDate.ToFarsi(), // PetitionNo = x.DiagnosisPetition.PetitionNo, // TotalPenalty = x.DiagnosisPetition.TotalPenalty, // TotalPenaltyTitles = x.DiagnosisPetition.TotalPenaltyTitles, // WorkHistoryDescription = x.DiagnosisPetition.WorkHistoryDescreption // }, // DisputeResolutionPetition = x.DisputeResolutionPetition == null // ? new EditPetition() // : new EditPetition // { // Id = x.DisputeResolutionPetition.id, // BoardType_Id = x.DisputeResolutionPetition.BoardType_Id, // Description = x.DisputeResolutionPetition.Description, // File_Id = x.DisputeResolutionPetition.File_Id, // NotificationPetitionDate = x.DisputeResolutionPetition.NotificationPetitionDate.ToFarsi(), // PetitionIssuanceDate = x.DisputeResolutionPetition.PetitionIssuanceDate.ToFarsi(), // PetitionNo = x.DisputeResolutionPetition.PetitionNo, // TotalPenalty = x.DisputeResolutionPetition.TotalPenalty, // TotalPenaltyTitles = x.DisputeResolutionPetition.TotalPenaltyTitles, // WorkHistoryDescription = x.DisputeResolutionPetition.WorkHistoryDescreption // }, // DiagnosisEvidenceId = x.DiagnosisEvidence != null ? x.DiagnosisEvidence.id : 0, // DisputeResolutionEvidenceId = x.DisputeResolutionEvidence != null ? x.DisputeResolutionEvidence.id : 0, // DiagnosisMasterPetitionId = x.DiagnosisMasterPetition != null ? x.DiagnosisMasterPetition.id : 0, // DisputeResolutionMasterPetitionId = x.DisputeResolutionMasterPetition != null ? x.DisputeResolutionMasterPetition.id : 0, // FirstDiagnosisPS = x.FirstDiagnosisPS == null // ? new EditProceedingSession() // : new EditProceedingSession // { // Id = x.Id, // Board_Id = x.FirstDiagnosisPS.Board_Id, // Date = x.FirstDiagnosisPS.Date.ToFarsi(), // Time = x.FirstDiagnosisPS.Time, // Status = x.FirstDiagnosisPS.Status // }, // LastDiagnosisPS = x.LastDiagnosisPS == null // ? new EditProceedingSession() // : new EditProceedingSession // { // Id = x.Id, // Board_Id = x.LastDiagnosisPS.Board_Id, // Date = x.LastDiagnosisPS.Date.ToFarsi(), // Time = x.LastDiagnosisPS.Time, // Status = x.LastDiagnosisPS.Status // }, // FirstDisputeResolutionPS = x.FirstDisputeResolutionPS == null // ? new EditProceedingSession() // : new EditProceedingSession // { // Id = x.Id, // Board_Id = x.FirstDisputeResolutionPS.Board_Id, // Date = x.FirstDisputeResolutionPS.Date.ToFarsi(), // Time = x.FirstDisputeResolutionPS.Time, // Status = x.FirstDisputeResolutionPS.Status // }, // LastDisputeResolutionPS = x.LastDisputeResolutionPS == null // ? new EditProceedingSession() // : new EditProceedingSession // { // Id = x.Id, // Board_Id = x.LastDisputeResolutionPS.Board_Id, // Date = x.LastDisputeResolutionPS.Date.ToFarsi(), // Time = x.LastDisputeResolutionPS.Time, // Status = x.LastDisputeResolutionPS.Status // }, // DiagnosisPsCount = x.DiagnosisBoard != null ? x.DiagnosisBoard.ProceedingSessionsList.Count() : 0, // DisputeResolutionPsCount = x.DisputeResolutionBoard != null ? x.DisputeResolutionBoard.ProceedingSessionsList.Count() : 0 //}).ToList(); //return result; } public long FindLastArchiveNumber() { var checkExist = _context.Files.Any(); long ArchiveNo = 0; if (checkExist) { ArchiveNo = _context.Files.OrderByDescending(x => x.ArchiveNo).Select(x => x.ArchiveNo) .FirstOrDefault(); } return ArchiveNo; } public string GetEmployeeFullNameById(long id) { var result = _context.Employees.Where(x => x.id == id).Select(x => new EmployeeViewModel() { EmployeeFullName = x.FName + " " + x.LName }).FirstOrDefault(); return result.EmployeeFullName; } public string GetEmployerFullNameById(long id) { var result = _context.Employers.Where(x=>x.id == id).Select(x => new EmployerViewModel() { FullName = x.FullName }).FirstOrDefault(); return result.FullName; } public List GetAllEmploees() { //var query = _context.Files.Select(x => x.Reqester).ToList(); //query.AddRange(_context.Files.Select(x => x.Summoned).ToList()); //var query_1 = _context.Employees.Where(x=>x.IsActive).Select(x => new EmployeeViewModel() //{ // Id = x.id, // EmployeeFullName = x.FName + " " + x.LName, //}).Where(x => query.Contains(x.Id)); //return query_1.ToList(); return _context.Employees.Where(x => x.IsActive).Select(x => new EmployeeViewModel() { Id = x.id, EmployeeFullName = x.FName + " " + x.LName, }).ToList(); } public List GetAllEmployers() { return _context.Employers.Where(x => x.IsActive).Select(x => new EmployerViewModel() { Id = x.id, FullName = x.FullName, }).ToList(); } }