Beispiel #1
0
        public ActionResult Index(ContactFilterDto filterBox)
        {
            var contactListDto = new List <ContactListDto>();
            var contactClients = _hermesDataContext.Contacts.Select(x => x.KntId).Distinct().ToList();
            var clients        = _optimaDbContext.Kontrahenci.Where(x => contactClients.Contains(x.Knt_KntId)).ToList();

            foreach (var item in _hermesDataContext.Contacts.ToList())
            {
                var user   = _hermesDataContext.Users.Find(item.ApplicationUserId);
                var client = clients.SingleOrDefault(y => y.Knt_KntId == item.KntId);
                contactListDto.Add(new ContactListDto
                {
                    Id                  = item.Id,
                    ClientName          = client != null ? client.Knt_Nazwa1 : string.Empty,
                    ApplicationUser     = item.ApplicationUser,
                    ApplicationUserId   = item.ApplicationUserId,
                    CreateDate          = item.CreateDate,
                    EndDate             = item.EndDate,
                    SelectedContactType = item.SelectedContactType,
                    KntId               = item.KntId,
                    Note                = item.Note,
                    WorkerName          = user.FirstName + " " + user.LastName,
                });
            }

            var dataFormatter = new ContactDataFormat(filterBox);

            SetHeaders("Kontakty", "Lista wszystkich kontaktów", "Index", "Contact");
            SetViewParams(dataFormatter.SortParam, dataFormatter.Page, dataFormatter.PageSize);

            var listData = dataFormatter.GetFormattedData(contactListDto)
                           .ToPagedList(dataFormatter.Page, dataFormatter.PageSize);

            return(PartialView("_PagedListPartial", listData));
        }
Beispiel #2
0
 public List <ContactExcelDto> GetExcelData(ContactFilterDto input)
 {
     return(contactRepository.GetAll()
            .Where(p => p.ContactType == ContactType.GetInTouch)
            .WhereIf(input.FullName.IsNotNullOrEmpty(), p => p.FullName.Contains(input.FullName))
            .WhereIf(input.Email.IsNotNullOrEmpty(), p => p.Email.Contains(input.Email))
            .WhereIf(input.Phone.IsNotNullOrEmpty(), p => p.Phone == input.Phone)
            .Where(p => p.IsDeleted == false)
            .ToList()
            .Select(p => p.MapTo <ContactExcelDto>())
            .ToList());
 }
        public ActionResult <PagedListDto <ContactDto> > Search([FromQuery] ContactFilterDto filterDto)
        {
            // map filters
            var filter = _mapper.Map <ContactFilter>(filterDto);
            var paging = _mapper.Map <PagingFilter>(filterDto);

            // query repository
            var pagedList = _repository.Search(filter, paging);

            // map to dto and return
            var pagedListDto = _mapper.Map <PagedListDto <ContactDto> >(pagedList);

            return(pagedListDto);
        }
Beispiel #4
0
        public async Task <IActionResult> Get([FromQuery] ContactFilterDto filter)
        {
            try
            {
                var pageSize = filter.PageSize ?? 10;
                var skip     = 0;
                if (filter.Page.HasValue && filter.Page.Value > 1)
                {
                    skip = (filter.Page.Value - 1) * pageSize;
                }
                var predicate        = BuildFilter(filter);
                var filterExpression = predicate.Expand();
                var entities         = await _dbContext.Contacts
                                       .Where(filterExpression)
                                       .OrderBy(fld => fld.LastName)
                                       .Skip(skip)
                                       .Take(pageSize)
                                       .ToListAsync();

                var models = entities.Select(ent => new ContactDto
                {
                    BusinessEntityID = ent.BusinessEntityID,
                    Street           = ent.Street,
                    LastName         = ent.LastName,
                    City             = ent.City,
                    CountryRegion    = ent.CountryRegion,
                    EMailAddress     = ent.EMailAddress,
                    FirstName        = ent.FirstName,
                    MiddleName       = ent.MiddleName,
                    ModifiedDate     = ent.ModifiedDate,
                    PostalCode       = ent.PostalCode,
                    StateProvince    = ent.StateProvince,
                    TelephoneNumber  = ent.TelephoneNumber
                });
                return(Ok(models));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex));
            }
        }
Beispiel #5
0
        public virtual async Task <PagedResultDto <ContactDto> > GetAll(ContactFilterDto input)
        {
            var query = contactRepository.GetAll()
                        .Where(p => p.ContactType == ContactType.GetInTouch)
                        .WhereIf(input.FullName.IsNotNullOrEmpty(), p => p.FullName.Contains(input.FullName))
                        .WhereIf(input.Email.IsNotNullOrEmpty(), p => p.Email.Contains(input.Email))
                        .WhereIf(input.Phone.IsNotNullOrEmpty(), p => p.Phone == input.Phone);

            var totalCount = await query.CountAsync();

            query = ApplySorting(query, input);
            query = ApplyPaging(query, input);

            var entities = await query.ToListAsync();

            return(new PagedResultDto <ContactDto>(
                       totalCount,
                       entities.Select(p => p.MapTo <ContactDto>())
                       .ToList()
                       ));
        }
Beispiel #6
0
        public static Expression <Func <ContactInfoEntity, bool> > BuildFilter(ContactFilterDto filter)
        {
            var predicate = PredicateBuilder.New <ContactInfoEntity>()
                            .And(x => x.BusinessEntityID > 0);

            if (!string.IsNullOrWhiteSpace(filter.Address))
            {
                var addressFilter = PredicateBuilder.New <ContactInfoEntity>()
                                    .Or(x => x.Street.Contains(filter.Address))
                                    .Or(x => x.City.Contains(filter.Address))
                                    .Or(x => x.CountryRegion.Contains(filter.Address))
                                    .Or(x => x.PostalCode.Contains(filter.Address));
                predicate = predicate.And(addressFilter);
            }
            if (!string.IsNullOrWhiteSpace(filter.City))
            {
                predicate = predicate.And(flt => flt.City.Contains(filter.Address));
            }
            if (!string.IsNullOrWhiteSpace(filter.Name))
            {
                var nameFilter = PredicateBuilder.New <ContactInfoEntity>()
                                 .Or(x => x.FirstName.Contains(filter.Name))
                                 .Or(x => x.LastName.Contains(filter.Name))
                                 .Or(x => x.MiddleName.Contains(filter.Name));
                predicate = predicate.And(nameFilter);
            }
            if (filter.DateFrom.HasValue)
            {
                var date = filter.DateFrom.Value.LocalDateTime;
                predicate = predicate.And(ent => ent.ModifiedDate >= date);
            }
            if (filter.DateTo.HasValue)
            {
                var date = filter.DateTo.Value.LocalDateTime.AddDays(1);
                predicate = predicate.And(ent => ent.ModifiedDate < date);
            }

            return(predicate);
        }
Beispiel #7
0
        protected virtual IQueryable <Contact> ApplyPaging(IQueryable <Contact> query, ContactFilterDto input)
        {
            var pagedInput = input as IPagedResultRequest;

            if (pagedInput != null)
            {
                return(query.PageBy(pagedInput));
            }

            var limitedInput = input as ILimitedResultRequest;

            if (limitedInput != null)
            {
                return(query.Take(limitedInput.MaxResultCount));
            }

            return(query);
        }
Beispiel #8
0
        protected virtual IQueryable <Contact> ApplySorting(IQueryable <Contact> query, ContactFilterDto input)
        {
            var sortInput = input as ISortedResultRequest;

            if (sortInput != null)
            {
                if (sortInput.Sorting.IsNotNullOrEmpty())
                {
                    return(query.OrderBy(sortInput.Sorting));
                }
            }

            if (input is ILimitedResultRequest)
            {
                return(query.OrderByDescending(e => e.Id));
            }

            return(query);
        }
Beispiel #9
0
        public async Task <IActionResult> Query(int skip = 0, int take = 10, [FromQuery] ContactFilterDto contactFilter = null)
        {
            var queryable = _contactService.Queryable();

            if (contactFilter?.Domain != null)
            {
                queryable = queryable.Where(x => x.UrlTracking.Domain.Contains(contactFilter.Domain));
            }

            if (contactFilter?.FromTime != DateTime.MinValue && contactFilter?.ToTime != DateTime.MinValue)
            {
                queryable = queryable.Where(x => x.CreatedDate.Date >= contactFilter.FromTime.Date && x.CreatedDate.Date <= contactFilter.ToTime.Date);
            }

            if (contactFilter != null && !string.IsNullOrEmpty(contactFilter.UtmCampaign))
            {
                queryable = queryable.Where(x => x.UrlTracking.UtmCampaign.Contains(contactFilter.UtmCampaign));
            }

            if (contactFilter != null && !string.IsNullOrEmpty(contactFilter.UtmAdset))
            {
                queryable = queryable.Where(x => x.UrlTracking.UtmAdset.Contains(contactFilter.UtmAdset));
            }

            if (contactFilter != null && !string.IsNullOrEmpty(contactFilter.UtmAds))
            {
                queryable = queryable.Where(x => x.UrlTracking.UtmAds.Contains(contactFilter.UtmAds));
            }

            if (contactFilter != null && !string.IsNullOrEmpty(contactFilter.UtmAgent))
            {
                queryable = queryable.Where(x => x.UrlTracking.UtmAgent.Contains(contactFilter.UtmAgent));
            }

            if (contactFilter != null && !string.IsNullOrEmpty(contactFilter.UtmMedium))
            {
                queryable = queryable.Where(x => x.UrlTracking.UtmMedium.Contains(contactFilter.UtmMedium));
            }

            if (contactFilter != null && !string.IsNullOrEmpty(contactFilter.UtmSource))
            {
                queryable = queryable.Where(x => x.UrlTracking.UtmSource.Contains(contactFilter.UtmSource));
            }

            if (contactFilter != null && !string.IsNullOrEmpty(contactFilter.UtmTeam))
            {
                queryable = queryable.Where(x => x.UrlTracking.UtmTeam.Contains(contactFilter.UtmTeam));
            }

            var list = new QueryResult <Contact>
            {
                Items = await queryable
                        .Include(x => x.UrlTracking)
                        .OrderByDescending(x => x.CreatedDate)
                        .Skip(skip).Take(take)
                        .Select(x => new Contact()
                {
                    Id          = x.Id,
                    Data        = x.Data,
                    AdsLinkId   = x.AdsLinkId,
                    UrlTracking = x.UrlTracking,
                    CreatedDate = x.CreatedDate,
                    UpdatedDate = x.UpdatedDate
                }).ToListAsync(),
                Count = await queryable.CountAsync()
            };

            return(Ok(list));
        }