You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

111 lines
2.7 KiB

package controller;
import db.UserAmap;
import haxe.Json;
import neko.Web;
/**
* REST JSON API
*
* @author fbarbut
*/
class Api extends Controller
{
/**
* Public infos about this Cagette.net installation
*/
public function doDefault(){
var json : Dynamic = {
version:App.VERSION.toString(),
debug:App.config.DEBUG,
email:App.config.get("webmaster_email"),
groups:[]
};
for ( g in db.Amap.manager.all()){
//a strange way to exclude "test" accounts
if ( UserAmap.manager.count($amapId == g.id) > 20){
var place = g.getMainPlace();
var d = {
name:g.name,
cagetteNetwork:g.flags.has(db.Amap.AmapFlags.CagetteNetwork),
id:g.id,
url:"http://" + Web.getHostName() + "/group/" + g.id,
membersNum : g.getMembersNum(),
contracts: Lambda.array(Lambda.map(g.getActiveContracts(false), function(c) return c.name)),
place : {name:place.name, address1:place.address1,address2:place.address2,zipCode:place.zipCode,city:place.city }
};
json.groups.push(d);
}
}
Sys.print( Json.stringify(json) );
}
/*public function doError(){
sugoi.Web.setReturnCode(403);
}*/
#if plugins
//cagette-pro
public function doPro(d:haxe.web.Dispatch) {
d.dispatch(new pro.controller.api.Main());
}
#end
public function doShop(d:haxe.web.Dispatch) {
d.dispatch(new controller.api.Shop());
}
public function doOrder(d:haxe.web.Dispatch) {
d.dispatch(new controller.api.Order());
}
/**
* Get distribution planning for this group
*
* @param group
*/
public function doPlanning(group:db.Amap){
var contracts = group.getActiveContracts(true);
var cids = Lambda.map(contracts, function(p) return p.id);
var now = Date.now();
var now = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0, 0, 0);
var twoMonths = new Date(now.getFullYear(), now.getMonth()+2, now.getDate(), 0, 0, 0);
var distribs = db.Distribution.manager.search(($contractId in cids) && ($date >= now) && ($date<=twoMonths), { orderBy:date }, false);
var out = new Array<{id:Int,start:Date,end:Date,contract:String,contractId:Int,place:Dynamic}>();
for ( d in distribs){
var place = d.place;
var p = {name:place.name, address1:place.address1,address2:place.address2,zipCode:place.zipCode,city:place.city }
out.push({id:d.id,start:d.date,end:d.end,contract:d.contract.name,contractId:d.contract.id,place:p});
}
Sys.print(Json.stringify(out));
}
public function doUser(d:haxe.web.Dispatch){
d.dispatch(new controller.api.User());
}
public function doGroup(d:haxe.web.Dispatch){
d.dispatch(new controller.api.Group());
}
public function doProduct(d:haxe.web.Dispatch){
d.dispatch(new controller.api.Product());
}
}