public async Task <IActionResult> GetProfiles([FromQuery] GetProfiles.Query query)
        {
            if (query.Limit < Configurations.MinLimit || query.Limit > Configurations.MaxLimit)
            {
                return(await Error(HttpStatusCode.BadRequest, "limit", "Invalid limit parameter"));
            }

            if (query.Page <= 0)
            {
                return(await Error(HttpStatusCode.BadRequest, "page", "Invalid request parameters"));
            }

            var profileDto = await _mediator.Send(query);

            var rootObject = new ProfilesRootObject()
            {
                Profiles = profileDto
            };

            var json = JsonFieldsSerializer.Serialize(rootObject, query.Fields);

            return(new RawJsonActionResult(json));
        }
        public async Task <IActionResult> GetProfileById(int id, string fields = "")
        {
            if (id <= 0)
            {
                return(await Error(HttpStatusCode.BadRequest, "id", "invalid profile id"));
            }

            var profileDto = await _mediator.Send(new GetProfileById.Query {
                Id = id, Fields = fields
            });

            if (profileDto == null)
            {
                return(await Error(HttpStatusCode.NotFound, "profile", "not found"));
            }

            var rootObject = new ProfilesRootObject();

            rootObject.Profiles.Add(profileDto);

            var json = JsonFieldsSerializer.Serialize(rootObject, fields);

            return(new RawJsonActionResult(json));
        }