public virtual async Task <IHttpActionResult> Search([FromBody] TSearchEntity model, [FromUri] string fields)
        {
            //TODO:: Searchbase is niet proper als body, moet appart model worden ooit
            try
            {
                if (model == null)
                {
                    return(BadRequest("Model not found"));
                }
                if (ModelState.IsValid)
                {
                    var entities = await EntityReader.Filter(model, fields.Split(','));

                    var models = Mapper.Map <IEnumerable <TModel> >(entities);
                    return(Ok(models));
                }
                else
                {
                    return(BadRequest(ModelState));
                }
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
        public async Task <IHttpActionResult> GetInfo([FromBody] SearchBase <Gebruiker> model)
        {
            try
            {
                if (User?.Identity == null)
                {
                    return(Unauthorized());
                }
                if (!User.Identity.IsAuthenticated)
                {
                    return(Unauthorized());
                }
                var currentUser = await EntityReader.Filter(g => g.Email == User.Identity.Name, nameof(Gebruiker.Verantwoordelijke));

                return(Ok(Mapper.Map <GebruikerModel>(currentUser.FirstOrDefault())));
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
        public override async Task <IHttpActionResult> Get([FromUri] string fields)
        {
            try
            {
                IEnumerable <Issue> entities = null;
                var userName = User.Identity.Name;

                if (User.IsInRole(Rol.Administrator))
                {
                    entities = await EntityReader.GetAllAsync(fields.Split(','));
                }
                else if (User.IsInRole(Rol.Manager))
                {
                    entities = await EntityReader.Filter(e => e.Gebruiker.Email == userName || e.Gebruiker.Verantwoordelijke.Email == userName, fields.Split(','));
                }
                else if (User.IsInRole(Rol.Dispatcher))
                {
                    entities = await EntityReader.Filter(e => e.Gebruiker.Email == userName ||
                                                         (e.IssueStatussen.OrderByDescending(x => x.CreationDate).FirstOrDefault().Solver.Email == userName) ||
                                                         e.IssueStatussen.OrderByDescending(x => x.CreationDate).FirstOrDefault().StatusBeschrijving == IssueStatusBeschrijving.Geweigerd ||
                                                         e.IssueStatussen.OrderByDescending(x => x.CreationDate).FirstOrDefault().StatusBeschrijving == IssueStatusBeschrijving.Nieuw, fields.Split(','));
                }
                else if (User.IsInRole(Rol.Solver))
                {
                    entities = await EntityReader.Filter(e => e.Gebruiker.Email == userName ||
                                                         (e.IssueStatussen.OrderByDescending(x => x.CreationDate).FirstOrDefault().Solver.Email == userName), fields.Split(','));
                }
                else if (User.IsInRole(Rol.Gebruiker))
                {
                    entities = await EntityReader.Filter(e => e.Gebruiker.Email == userName, fields.Split(','));
                }


                return(Ok(Mapper.Map <IEnumerable <IssueModel> >(entities)));
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }