Esempio n. 1
0
        public async Task <HttpResponseMessage> PostContactsFilter([FromBody] ContactFilterModel contactFilterData, [FromUri] string[] param)
        {
            List <ContactResponseModel> response = await manager.GetFilteredContacts(contactFilterData, param);

            if (response == null)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, "wrong Url, can't work with database"));
            }

            return(Request.CreateResponse(HttpStatusCode.OK, response));
        }
Esempio n. 2
0
        public IActionResult GetContacts([FromBody] ContactFilterModel filter)
        {
            filter.ThrowBadRequestIfNull($"The request must include a filter.");
            if (!filter.IsValid())
            {
                throw new BadRequestException("Contact filter must contain valid values.");
            }

            Paged <Dal.Entities.PimsContactMgrVw> contacts = _pimsService.Contact.GetPage((ContactFilter)filter);

            return(new JsonResult(_mapper.Map <Api.Models.PageModel <ContactSummaryModel> >(contacts)));
        }
Esempio n. 3
0
        public async Task <List <ContactResponseModel> > GetFilteredContacts(ContactFilterModel contactFilterData, string[] orderParams)
        {
            return(await Task.Run(() =>
            {
                List <ContactResponseModel> result = new List <ContactResponseModel>();
                string resultQuery = "SELECT * FROM Contacts";
                List <string> conditions = new List <string>();

                if (!string.IsNullOrEmpty(contactFilterData.FullName))
                {
                    conditions.Add($" FullName LIKE '%{contactFilterData.FullName}%'");
                }

                if (!string.IsNullOrEmpty(contactFilterData.CompanyName))
                {
                    conditions.Add($" CompanyName LIKE '%{contactFilterData.CompanyName}%'");
                }

                if (!string.IsNullOrEmpty(contactFilterData.Position))
                {
                    conditions.Add($" Position LIKE '%{contactFilterData.Position}%'");
                }

                if (!string.IsNullOrEmpty(contactFilterData.Country))
                {
                    conditions.Add($" Country LIKE '%{contactFilterData.Country}%'");
                }

                if (!string.IsNullOrEmpty(contactFilterData.Email))
                {
                    conditions.Add($" Email LIKE '%{contactFilterData.Email}%'");
                }

                if (conditions.Count != 0)
                {
                    resultQuery += " WHERE";
                    foreach (var item in conditions)
                    {
                        resultQuery += item + " AND";
                    }
                    resultQuery = resultQuery.Substring(0, resultQuery.Length - 4);
                }

                if (orderParams != null && orderParams.Length != 0)
                {
                    resultQuery += " ORDER BY ";
                    foreach (var item in orderParams)
                    {
                        resultQuery += $"{item.Replace('_', ' ')},";
                    }
                    resultQuery = resultQuery.TrimEnd(',');
                }

                List <Contact> contactList;
                try
                {
                    contactList = db.Database.SqlQuery <Contact>(resultQuery).ToList();
                }
                catch
                {
                    return null;
                }

                return contactList.Select(contact => factory.CreateContactResponseModel(contact)).ToList();
            }));
        }
Esempio n. 4
0
        public HttpResponseMessage PostContactsFilter([FromBody] ContactFilterModel contactFilterData, [FromUri] string[] param)
        {
            var response = manager.GetFilteredContacts(contactFilterData, param);

            return(response == null?Request.CreateResponse(HttpStatusCode.BadRequest, "wrong Url, can't work with database") : Request.CreateResponse(HttpStatusCode.OK, response));
        }