Package controllers.api

Source Code of controllers.api.Users

package controllers.api;

import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import models.InternshipFamiliar;
import models.Profile;
import models.Subscriber;
import models.User;
import models.UserProfile;
import models.Profile.ProfileType;
import play.mvc.Router;
import play.mvc.Http.StatusCode;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
import controllers.Check;
import controllers.Data;
import controllers.SecuredBaseController;
import controllers.Security;
import exceptions.ValidationException;

@Check(Security.ADMIN_ROLE)
public class Users extends ApiSecured {
 
 
  public static void list(Integer offset, Integer limit, String type) {
    if(offset == null) offset = 0;
    if(limit==null || limit > LIMIT || limit==0) {
      limit = LIMIT;
    }
    List<User> users = new ArrayList<User>();
    Integer count = 0;
    if(type == null || "".equals(type)) {
      count = User.count();
      if(count>0) users = User.paginate(User.all(), offset, limit);
    } else {
      if(ProfileType.ADMIN.getName().equals(type)) {
        count = User.countAdmins();
        if( count > 0 ) users.addAll(User.getAdmins(offset, limit));
       
      } else if(ProfileType.INTERNSHIP.getName().equals(type)) {
        count = User.countInternals();
        if(count>0) users.addAll(User.getInternals(offset, limit));
      } else if(ProfileType.FAMILIAR.getName().equals(type)) {
        count = User.countFamiliars();
        if(count>0) users.addAll(User.getFamiliars(offset, limit));
      } else {
        notFound();
      }
    }
    Data<User> data = new Data<User>();
    data.total = count;
    data.data = users;
    Type dataType = new TypeToken<Data<User>>(){}.getType();
    renderJSON(gson().toJson(data, dataType));
  }
 
  public static void get(Long id) {
    final User user = User.findById(id);
    if(user==null) {
      notFound();
    }
    renderJSON(gson().toJson(user));
  }
 
  public static void add(JsonObject body) throws ValidationException {
    User user = new Gson().fromJson(body, User.class);
    validation.valid(user);
    if(validation.hasErrors()) {
      throw new ValidationException(validation.errors());
    }
    user.insert();
    UserProfile user_profile = new UserProfile(user,Profile.findByType(ProfileType.INTERNSHIP));
    user_profile.insert();
    response.status = StatusCode.CREATED;
    Map map = new HashMap();
    map.put("id", user.id);
    String url = Router.reverse("api.Users.get", map).url;// GET /clients/1541
    response.setHeader("location", url);
    renderJSON(gson().toJson(user));
  }
 
  public static void edit(Long id, JsonObject body) {
    User user = gson().fromJson(body, User.class);
    if(user==null) {
      notFound();
    }
    user.update();
    response.status = StatusCode.OK;
    Map map = new HashMap();
    map.put("id", user.id);
    String url = Router.reverse("api.Users.get", map).url;// GET /clients/1541
    response.setHeader("location", url);
  }
 
  public static void delete(Long id) {
    final User user = User.findById(id);
    if(user==null) {
      notFound();
    }
    InternshipFamiliar.delete(user);
    user.delete();
    response.status = StatusCode.NO_RESPONSE;
  }
 
  public static void listFamiliars(Long id, Integer offset, Integer limit) {
    if(offset == null) offset = 0;
    if(limit==null || limit > LIMIT || limit==0) {
      limit = LIMIT;
    }
    final User internal = User.findById(id);
    if(internal==null) {
      notFound();
    }
    Data<User> data = new Data<User>();
    data.total = InternshipFamiliar.countByInternship(internal);
    data.data  = new ArrayList<User>();
    data.data.addAll(InternshipFamiliar.paginateByInternship(InternshipFamiliar.findByInternship(internal), offset, limit));
    Type dataType = new TypeToken<Data<User>>(){}.getType();
    renderJSON(gson().toJson(data, dataType));
  }
 
  public static void addFamiliar(Long id, JsonObject body) throws ValidationException {
    User internal = User.findById(id);
    if(internal==null) {
      notFound();
    }
    User familiar = new Gson().fromJson(body, User.class);
    validation.valid(familiar);
    if(validation.hasErrors()) {
      throw new ValidationException(validation.errors());
    }
    familiar.insert();
    UserProfile user_profile = new UserProfile(familiar,
        Profile.findByType(Profile.ProfileType.FAMILIAR));
    user_profile.insert();
    InternshipFamiliar internshipFamiliar = new InternshipFamiliar(internal, familiar);
    internshipFamiliar.insert();
    response.status = StatusCode.CREATED;
    Map map = new HashMap();
    map.put("id", familiar.id);
    String url = Router.reverse("api.Users.get", map).url;// GET /users/1541
    response.setHeader("location", url);
    renderJSON(gson().toJson(familiar));
  }
 
 
  public static void profiles() {
    Data<String> data = new Data<String>();
    List<String> profileNames = new ArrayList<String>();
    data.total = Profile.count();
    data.data = profileNames;
    for(Profile profile : Profile.findAll()) {
      profileNames.add(profile.type.getName());
    }
    renderJSON(data);
  }
 
}
TOP

Related Classes of controllers.api.Users

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.