Exemplo n.º 1
0
        public async Task <IActionResult> OnPostSearch([FromBody] SearchPersonQuery searchQuery)
        {
            try
            {
                searchQuery.OrganizationId = await _currentUser.GetUserOrganizationID();

                List <SearchedPersonModel> SearchedResult = new List <SearchedPersonModel>();
                SearchedResult = await Mediator.Send(searchQuery);

                return(new JsonResult(new UIResult()
                {
                    Data = new { list = SearchedResult },
                    Status = UIStatus.SuccessWithoutMessage,
                    Text = string.Empty,
                    Description = string.Empty
                }));
            }
            catch (Exception ex)
            {
                return(new JsonResult(CustomMessages.FabricateException(ex)));
            }
        }
        public async Task <ApiDataResponse <PaginatedList <PersonDTO> > > GetAllPersons([FromQuery] PageQueryParameters pageQueryParameters = null, [FromQuery] SearchPersonQuery personQuery = null)
        {
            var paginatedModel = PaginatedModelPersonToQueryList.Instance.MapBack(pageQueryParameters);

            var filter     = PersonFilterToSearchMapper.Instance.MapBack(personQuery);
            var allPersons = await personService.GetAllPersons(pageQueryParameters.PageNumber, pageQueryParameters.PageSize, filter);

            var persons = new PaginatedList <PersonDTO>(allPersons);

            return(new ApiDataResponse <PaginatedList <PersonDTO> >(persons));
        }
Exemplo n.º 3
0
        public async Task <List <SearchedPersonModel> > SearchPerson(SearchPersonQuery request)
        {
            List <SearchedPersonModel> searchResult = new List <SearchedPersonModel>();

            // If specific person is required. Searched based on Id or HrCode
            if (request.Id != null)
            {
                searchResult = await(from p in _context.Person
                                     join g in _context.Gender on p.GenderId equals g.ID into pg
                                     from resultPG in pg.DefaultIfEmpty()
                                     join b in _context.BloodGroup on p.BloodGroupId equals b.Id into pb
                                     from resultPB in pb.DefaultIfEmpty()
                                     join e in _context.Ethnicity on p.EthnicityId equals e.Id into pe
                                     from resultPE in pe.DefaultIfEmpty()
                                     join r in _context.Religion on p.ReligionId equals r.Id into pr
                                     from resultPR in pr.DefaultIfEmpty()
                                     join l in _context.Location on p.BirthLocationId equals l.Id into pl
                                     from resultPL in pl.DefaultIfEmpty()
                                     join m in _context.MaritalStatus on p.MaritalStatusId equals m.Id into pm
                                     from resultPM in pm.DefaultIfEmpty()
                                     join dt in _context.DocumentTypes on p.DocumentTypeId equals dt.Id into pdt
                                     from resultPDT in pdt.DefaultIfEmpty()
                                     where p.Id == request.Id
                                     select new SearchedPersonModel
                {
                    FirstName          = p.FirstName,
                    LastName           = p.LastName,
                    FirstNameEng       = p.FirstNameEng,
                    LastNameEng        = p.LastNameEng,
                    FatherName         = p.FatherName,
                    FatherNameEng      = p.FatherNameEng,
                    GenderId           = p.GenderId,
                    DateOfBirth        = p.DateOfBirth,
                    GrandFatherName    = p.GrandFatherName,
                    GrandFatherNameEng = p.GrandFatherNameEng,
                    Id                = p.Id,
                    DocumentTypeId    = p.DocumentTypeId,
                    Nid               = p.Nid,
                    PhotoPath         = p.PhotoPath,
                    Hrcode            = p.Hrcode,
                    BirthLocationId   = p.BirthLocationId,
                    MaritalStatusId   = p.MaritalStatusId,
                    ReligionId        = p.ReligionId,
                    EthnicityId       = p.EthnicityId,
                    Comments          = p.Comments,
                    BloodGroupId      = p.BloodGroupId,
                    GenderText        = resultPG.Dari,
                    BloodGroupText    = resultPB.Name,
                    EthnicityText     = resultPE.Name,
                    ReligionText      = resultPR.Name,
                    BirthLocationText = resultPL.Name,
                    MaritalStatusText = resultPM.Name,
                    DocumentTypeText  = resultPDT.Name,
                    NIDText           = ConvertJSONToString(p.Nid, resultPDT.Name) ?? "درج نگردیده",
                    DoBText           = PersianLibrary.PersianDate.GetFormatedString(p.DateOfBirth)
                }).OrderBy(x => x.Id).ToListAsync();
            }
            // Else search based on search terms
            else if (request.OrganizationId != null)
            {
                searchResult = await(from p in _context.Person
                                     join g in _context.Gender on p.GenderId equals g.ID into pg
                                     from resultPG in pg.DefaultIfEmpty()
                                     join b in _context.BloodGroup on p.BloodGroupId equals b.Id into pb
                                     from resultPB in pb.DefaultIfEmpty()
                                     join e in _context.Ethnicity on p.EthnicityId equals e.Id into pe
                                     from resultPE in pe.DefaultIfEmpty()
                                     join r in _context.Religion on p.ReligionId equals r.Id into pr
                                     from resultPR in pr.DefaultIfEmpty()
                                     join l in _context.Location on p.BirthLocationId equals l.Id into pl
                                     from resultPL in pl.DefaultIfEmpty()
                                     join m in _context.MaritalStatus on p.MaritalStatusId equals m.Id into pm
                                     from resultPM in pm.DefaultIfEmpty()
                                     join dt in _context.DocumentTypes on p.DocumentTypeId equals dt.Id into pdt
                                     from resultPDT in pdt.DefaultIfEmpty()
                                     where (p.FirstName.Contains(request.FirstName) || string.IsNullOrEmpty(request.FirstName)) &&
                                     (p.LastName.Contains(request.LastName) || string.IsNullOrEmpty(request.LastName)) &&
                                     (p.FatherName.Contains(request.FatherName) || string.IsNullOrEmpty(request.FatherName)) &&
                                     (p.GrandFatherName.Contains(request.GrandFatherName) || string.IsNullOrEmpty(request.GrandFatherName)) &&
                                     (p.FirstNameEng.Contains(request.FirstNameEng) || string.IsNullOrEmpty(request.FirstNameEng)) &&
                                     (p.LastNameEng.Contains(request.LastNameEng) || string.IsNullOrEmpty(request.LastNameEng)) &&
                                     (p.GrandFatherNameEng.Contains(request.GrandFatherNameEng) || string.IsNullOrEmpty(request.GrandFatherNameEng)) &&
                                     (p.OrganizationId == request.OrganizationId)
                                     select new SearchedPersonModel
                {
                    FirstName          = p.FirstName,
                    LastName           = p.LastName,
                    FirstNameEng       = p.FirstNameEng,
                    LastNameEng        = p.LastNameEng,
                    FatherName         = p.FatherName,
                    FatherNameEng      = p.FatherNameEng,
                    GenderId           = p.GenderId,
                    DateOfBirth        = p.DateOfBirth,
                    GrandFatherName    = p.GrandFatherName,
                    GrandFatherNameEng = p.GrandFatherNameEng,
                    Id                = p.Id,
                    DocumentTypeId    = p.DocumentTypeId,
                    Hrcode            = p.Hrcode,
                    BirthLocationId   = p.BirthLocationId,
                    MaritalStatusId   = p.MaritalStatusId,
                    ReligionId        = p.ReligionId,
                    EthnicityId       = p.EthnicityId,
                    Comments          = p.Comments,
                    BloodGroupId      = p.BloodGroupId,
                    Nid               = p.Nid,
                    PhotoPath         = p.PhotoPath,
                    GenderText        = resultPG.Dari,
                    BloodGroupText    = resultPB.Name,
                    EthnicityText     = resultPE.Name,
                    ReligionText      = resultPR.Name,
                    BirthLocationText = resultPL.Name,
                    MaritalStatusText = resultPM.Name,
                    DocumentTypeText  = resultPDT.Name,
                    NIDText           = ConvertJSONToString(p.Nid, resultPDT.Name) ?? "درج نگردیده",
                    DoBText           = PersianLibrary.PersianDate.GetFormatedString(p.DateOfBirth)
                }).OrderBy(x => x.Id).ToListAsync();
            }
            else
            {
                searchResult = await(from p in _context.Person
                                     join g in _context.Gender on p.GenderId equals g.ID into pg
                                     from resultPG in pg.DefaultIfEmpty()
                                     join b in _context.BloodGroup on p.BloodGroupId equals b.Id into pb
                                     from resultPB in pb.DefaultIfEmpty()
                                     join e in _context.Ethnicity on p.EthnicityId equals e.Id into pe
                                     from resultPE in pe.DefaultIfEmpty()
                                     join r in _context.Religion on p.ReligionId equals r.Id into pr
                                     from resultPR in pr.DefaultIfEmpty()
                                     join l in _context.Location on p.BirthLocationId equals l.Id into pl
                                     from resultPL in pl.DefaultIfEmpty()
                                     join m in _context.MaritalStatus on p.MaritalStatusId equals m.Id into pm
                                     from resultPM in pm.DefaultIfEmpty()
                                     join dt in _context.DocumentTypes on p.DocumentTypeId equals dt.Id into pdt
                                     from resultPDT in pdt.DefaultIfEmpty()
                                     select new SearchedPersonModel
                {
                    FirstName          = p.FirstName,
                    LastName           = p.LastName,
                    FirstNameEng       = p.FirstNameEng,
                    LastNameEng        = p.LastNameEng,
                    FatherName         = p.FatherName,
                    FatherNameEng      = p.FatherNameEng,
                    GenderId           = p.GenderId,
                    DateOfBirth        = p.DateOfBirth,
                    GrandFatherName    = p.GrandFatherName,
                    GrandFatherNameEng = p.GrandFatherNameEng,
                    Id                = p.Id,
                    DocumentTypeId    = p.DocumentTypeId,
                    Hrcode            = p.Hrcode,
                    BirthLocationId   = p.BirthLocationId,
                    MaritalStatusId   = p.MaritalStatusId,
                    ReligionId        = p.ReligionId,
                    EthnicityId       = p.EthnicityId,
                    Comments          = p.Comments,
                    BloodGroupId      = p.BloodGroupId,
                    Nid               = p.Nid,
                    PhotoPath         = p.PhotoPath,
                    GenderText        = resultPG.Dari,
                    BloodGroupText    = resultPB.Name,
                    EthnicityText     = resultPE.Name,
                    ReligionText      = resultPR.Name,
                    BirthLocationText = resultPL.Name,
                    MaritalStatusText = resultPM.Name,
                    DocumentTypeText  = resultPDT.Name,
                    NIDText           = ConvertJSONToString(p.Nid, resultPDT.Name) ?? "درج نگردیده",
                    DoBText           = PersianLibrary.PersianDate.GetFormatedString(p.DateOfBirth)
                }).OrderBy(x => x.Id).Take((request.NoOfRecords == 0) ? 100 : request.NoOfRecords).ToListAsync();
            }
            return(searchResult);
        }