public async Task <List <GetAllDocumentDto> > Handle(GetAllDocumentQuery request, CancellationToken cancellationToken)
        {
            List <Document> documents = await _context.Documents.Where(d => !d.Deleted).ToListAsync();

            List <GetAllDocumentDto> result = documents
                                              .Select(d => new GetAllDocumentDto
            {
                Id                 = d.Id,
                Code               = d.Code,
                Name               = d.Name,
                CompanyCode        = d.CompanyCode,
                DepartmentCode     = d.DepartmentCode,
                Description        = d.Description,
                Approver           = d.Approver,
                Auditor            = d.Auditor,
                DDCAudited         = d.DDCAudited,
                ContentChange      = d.ContentChange,
                DocumentNumber     = d.DocumentNumber,
                Drafter            = d.Drafter,
                DocumentType       = d.DocumentType,
                EffectiveDate      = d.EffectiveDate,
                FileName           = d.FileName,
                Module             = d.Module,
                ReviewDate         = d.ReviewDate,
                ReviewNumber       = d.ReviewNumber,
                ScopeOfApplication = d.ScopeOfApplication,
                ScopeOfDeloyment   = d.ScopeOfDeloyment,
                Appendices         = _context.Appendices.Where(a => _context.StringSplit(a.RelateToDocuments, ";").Any(a1 => a1.SplitData == d.Code))
                                     .Select(a => new AppendiceDto
                {
                    Id             = a.Id,
                    LinkFile       = a.LinkFile,
                    Code           = a.Code,
                    Name           = a.Name,
                    DocumentType   = a.DocumentType,
                    FileName       = a.FileName,
                    DocumentNumber = a.AppendiceNumber,
                    ReviewNumber   = a.ReviewNumber
                }).ToList()
            }).ToList();

            return(result);
        }
        public async Task <GetAppendiceByIdDto> Handle(GetAppendiceByIdQuery request, CancellationToken cancellationToken)
        {
            GetAppendiceByIdDto getAppendiceByIdDto = await _context.Appendices
                                                      .Where(d => !d.Deleted && d.Id == request.Id)
                                                      .Select(d => new GetAppendiceByIdDto
            {
                Id                 = d.Id,
                Code               = d.Code,
                Name               = d.Name,
                CompanyCode        = d.CompanyCode,
                AppendiceNumber    = d.AppendiceNumber,
                DepartmentCode     = d.DepartmentCode,
                Approver           = d.Approver,
                DDCAudited         = d.DDCAudited,
                DocumentType       = d.DocumentType,
                EffectiveDate      = d.EffectiveDate,
                FileName           = d.FileName,
                Module             = d.Module,
                ReviewDate         = d.ReviewDate,
                ReviewNumber       = d.ReviewNumber,
                ScopeOfApplication = d.ScopeOfApplication,
                ScopeOfDeloyment   = d.ScopeOfDeloyment,
                RelateToDocuments  = _context.Documents.Join(
                    _context.StringSplit(d.RelateToDocuments, ";"),
                    d1 => d1.Code,
                    d2 => d2.SplitData,
                    (d1, d2) => new RelateToDocumentDto
                {
                    Code           = d1.Code,
                    Name           = d1.Name,
                    FileName       = d1.FileName,
                    FolderName     = d1.FolderName,
                    DocumentNumber = d1.DocumentNumber,
                    ReviewNumber   = d1.ReviewNumber,
                    EffectiveDate  = d1.EffectiveDate,
                    ReviewDate     = d1.ReviewDate
                }).ToList(),
            })
                                                      .FirstOrDefaultAsync();

            return(getAppendiceByIdDto);
        }
Example #3
0
        public async Task <DataSourceResult> Handle(SearchDocumentsByTokenPagedQuery request, CancellationToken cancellationToken)
        {
            IQueryable <Document> query = _context.Documents.AsQueryable();

            query = query.Where(c => !c.Deleted);

            if (!string.IsNullOrWhiteSpace(request.Token))
            {
                if (request.AdvancedSearch)
                {
                    request.Token = request.Token?.ToLowerInvariant()?.NonUnicode();
                    string fileNames = string.Join(";", FindFilesByToken(request.Token));

                    query = query.Where(c => _context.NonUnicode(c.Name).Contains(request.Token) ||
                                        _context.NonUnicode(c.ContentChange).Contains(request.Token) ||
                                        _context.NonUnicode(c.DepartmentName).Contains(request.Token) ||
                                        _context.NonUnicode(c.DocumentNumber).Contains(request.Token) ||
                                        _context.NonUnicode(c.CompanyName).Contains(request.Token) ||
                                        _context.NonUnicode(c.FileName).Contains(request.Token) ||
                                        _context.NonUnicode(c.FolderName).Contains(request.Token) ||
                                        _context.NonUnicode(c.LinkFile).Contains(request.Token) ||
                                        _context.NonUnicode(c.Module).Contains(request.Token) ||
                                        _context.NonUnicode(c.RelateToDocuments).Contains(request.Token) ||
                                        _context.NonUnicode(c.ReplaceOf).Contains(request.Token) ||
                                        _context.NonUnicode(c.ReviewNumber).Contains(request.Token) ||
                                        _context.NonUnicode(c.ScopeOfApplication).Contains(request.Token) ||
                                        _context.NonUnicode(c.ScopeOfDeloyment).Contains(request.Token) ||
                                        _context.NonUnicode(c.Description).Contains(request.Token));
                    //|| _context.CompareTwoFiles(_context.NonUnicode(c.FileName), fileNames, ";"));
                }
                else
                {
                    /*query = query.Where(c => _context.NonUnicode(c.Name).Contains(request.Token)
                    || _context.NonUnicode(c.ContentChange).Contains(request.Token)
                    || _context.NonUnicode(c.DepartmentName).Contains(request.Token)
                    || _context.NonUnicode(c.DocumentNumber).Contains(request.Token)
                    || _context.NonUnicode(c.CompanyName).Contains(request.Token)
                    || _context.NonUnicode(c.FileName).Contains(request.Token)
                    || _context.NonUnicode(c.FolderName).Contains(request.Token)
                    || _context.NonUnicode(c.LinkFile).Contains(request.Token)
                    || _context.NonUnicode(c.Module).Contains(request.Token)
                    || _context.NonUnicode(c.RelateToDocuments).Contains(request.Token)
                    || _context.NonUnicode(c.ReplaceOf).Contains(request.Token)
                    || _context.NonUnicode(c.ReviewNumber).Contains(request.Token)
                    || _context.NonUnicode(c.ScopeOfApplication).Contains(request.Token)
                    || _context.NonUnicode(c.ScopeOfDeloyment).Contains(request.Token)
                    || _context.NonUnicode(c.Description).Contains(request.Token));*/
                    query = query.Where(c => c.Name.Contains(request.Token) ||
                                        c.ContentChange.Contains(request.Token) ||
                                        c.DepartmentName.Contains(request.Token) ||
                                        c.DocumentNumber.Contains(request.Token) ||
                                        c.CompanyName.Contains(request.Token) ||
                                        c.FileName.Contains(request.Token) ||
                                        c.FolderName.Contains(request.Token) ||
                                        c.LinkFile.Contains(request.Token) ||
                                        c.Module.Contains(request.Token) ||
                                        c.RelateToDocuments.Contains(request.Token) ||
                                        c.ReplaceOf.Contains(request.Token) ||
                                        c.ReviewNumber.Contains(request.Token) ||
                                        c.ScopeOfApplication.Contains(request.Token) ||
                                        c.ScopeOfDeloyment.Contains(request.Token) ||
                                        c.Description.Contains(request.Token));
                }
            }

            if (!request.DataSourceRequest.SortDataField.IsNullOrEmpty())
            {
                if (QueryHelper.PropertyExists <Document>(request.DataSourceRequest.SortDataField))
                {
                    switch (request.DataSourceRequest.SortOrder)
                    {
                    case "asc":
                        query = QueryHelper.OrderByProperty(query, request.DataSourceRequest.SortDataField);
                        break;

                    case "desc":
                        query = QueryHelper.OrderByPropertyDescending(query, request.DataSourceRequest.SortDataField);
                        break;

                    default:
                        query = query.OrderByDescending(u => u.CreatedOn);
                        break;
                    }
                }
            }
            else
            {
                query = query.OrderByDescending(u => u.CreatedOn);
            }

            IQueryable <SearchDocumentsByTokenPagedDto> test = query.Select(document => new SearchDocumentsByTokenPagedDto
            {
                Id                   = document.Id,
                Approver             = document.Approver,
                Auditor              = document.Auditor,
                Code                 = document.Code,
                CompanyCode          = document.CompanyCode,
                CompanyName          = document.CompanyName,
                ContentChange        = document.ContentChange,
                DDCAudited           = document.DDCAudited,
                DepartmentCode       = document.DepartmentCode,
                DepartmentName       = document.DepartmentName,
                Description          = document.Description,
                DocumentNumber       = document.DocumentNumber,
                DocumentType         = document.DocumentType,
                Drafter              = document.Drafter,
                EffectiveDate        = document.EffectiveDate,
                FileName             = document.FileName,
                FolderName           = document.FolderName,
                LinkFile             = document.LinkFile,
                Module               = document.Module,
                Name                 = document.Name,
                ReplaceEffectiveDate = document.ReplaceEffectiveDate,
                DocumentTypeName     = _context.DocumentTypes.FirstOrDefault(dt => dt.Code == document.DocumentType).Name,
                ListReplaceOf        = _context.Documents.
                                       Where(d => _context.StringSplit(document.ReplaceOf, ";").Any(a1 => a1.SplitData == d.Code))
                                       .Select(d => d.Name)
                                       .ToList(),
                ListRelateToDocuments = _context.Documents.
                                        Where(d => _context.StringSplit(document.RelateToDocuments, ";").Any(a1 => a1.SplitData == d.Code))
                                        .Select(d => d.Name)
                                        .ToList(),
                ReplaceOf          = document.ReplaceOf,
                RelateToDocuments  = document.RelateToDocuments,
                ReviewDate         = document.ReviewDate,
                ReviewNumber       = document.ReviewNumber,
                ScopeOfApplication = document.ScopeOfApplication,
                ScopeOfDeloyment   = document.ScopeOfDeloyment
            });

            PagedList <SearchDocumentsByTokenPagedDto> queryResult = new PagedList <SearchDocumentsByTokenPagedDto>();
            await queryResult.CreateAsync(test, request.DataSourceRequest.PageNum, request.DataSourceRequest.PageSize);

            return(new DataSourceResult
            {
                Data = queryResult.ToList(),
                Total = queryResult.TotalCount
            });
        }
        public async Task <GetDocumentByCodeDto> Handle(GetDocumentByCodeQuery request, CancellationToken cancellationToken)
        {
            GetDocumentByCodeDto getDocumentByCodeDto = await _context.Documents
                                                        .Where(d => !d.Deleted && d.Code == request.Code)
                                                        .Select(d => new GetDocumentByCodeDto
            {
                Id                 = d.Id,
                Code               = d.Code,
                Name               = d.Name,
                CompanyCode        = d.CompanyCode,
                DepartmentCode     = d.DepartmentCode,
                Description        = d.Description,
                Approver           = d.Approver,
                Auditor            = d.Auditor,
                DDCAudited         = d.DDCAudited,
                Active             = d.Active,
                ContentChange      = d.ContentChange,
                DocumentNumber     = d.DocumentNumber,
                Drafter            = d.Drafter,
                DocumentType       = d.DocumentType,
                EffectiveDate      = d.EffectiveDate,
                FileName           = d.FileName,
                FolderName         = d.FolderName,
                Module             = d.Module,
                ReviewDate         = d.ReviewDate,
                ReviewNumber       = d.ReviewNumber,
                ScopeOfApplication = d.ScopeOfApplication,
                ScopeOfDeloyment   = d.ScopeOfDeloyment,
                ReplaceByDocuments = _context.Documents.Where(d1 => _context.StringSplit(d1.RelateToDocuments, ";").Any(d2 => d2.SplitData == d.Code))
                                     .Select(d1 => new ReplaceToDocumentDto {
                    Code           = d1.Code,
                    Name           = d1.Name,
                    FileName       = d1.FileName,
                    FolderName     = d1.FolderName,
                    DocumentNumber = d1.DocumentNumber,
                    EffectiveDate  = d1.EffectiveDate,
                    ReviewDate     = d1.ReviewDate
                }).ToList(),
                RelateToDocuments = _context.Documents.Join(
                    _context.StringSplit(d.RelateToDocuments, ";"),
                    d1 => d1.Code,
                    d2 => d2.SplitData,
                    (d1, d2) => new RelateToDocumentDto
                {
                    Code           = d1.Code,
                    Name           = d1.Name,
                    FileName       = d1.FileName,
                    FolderName     = d1.FolderName,
                    DocumentNumber = d1.DocumentNumber,
                    EffectiveDate  = d1.EffectiveDate,
                    ReviewDate     = d1.ReviewDate
                }).ToList(),
                ReplaceToDocuments = _context.Documents.Join(_context.StringSplit(d.ReplaceOf, ";"),
                                                             d1 => d1.Code,
                                                             d2 => d2.SplitData,
                                                             (d1, d2) => new ReplaceToDocumentDto
                {
                    Code           = d1.Code,
                    Name           = d1.Name,
                    FileName       = d1.FileName,
                    FolderName     = d1.FolderName,
                    DocumentNumber = d1.DocumentNumber,
                    EffectiveDate  = d1.EffectiveDate,
                    ReviewDate     = d1.ReviewDate
                }).ToList(),
                Appendices = _context.Appendices.Where(a => _context.StringSplit(a.RelateToDocuments, ";").Any(a1 => a1.SplitData == d.Code))
                             .Select(a => new AppendiceDto
                {
                    Code           = a.Code,
                    Name           = a.Name,
                    DocumentType   = a.DocumentType,
                    FileName       = a.FileName,
                    DocumentNumber = a.AppendiceNumber,
                    ReviewNumber   = a.ReviewNumber,
                    LinkFile       = a.LinkFile
                }).ToList()
            })
                                                        .FirstOrDefaultAsync();

            return(getDocumentByCodeDto);
        }