Browse Source

campaigns

Maxim Sokhatsky 11 years ago
parent
commit
e22c952866
1 changed files with 25 additions and 0 deletions
  1. 25 0
      apps/server/src/game.erl

+ 25 - 0
apps/server/src/game.erl

@@ -2,10 +2,12 @@
 -author('Maxim Sokhatsky <maxim@synrc.com>').
 -author('Maxim Sokhatsky <maxim@synrc.com>').
 -compile(export_all).
 -compile(export_all).
 -include_lib("server/include/requests.hrl").
 -include_lib("server/include/requests.hrl").
+-include_lib("db/include/game_log.hrl").
 -include_lib("db/include/table.hrl").
 -include_lib("db/include/table.hrl").
 -include_lib("db/include/tournaments.hrl").
 -include_lib("db/include/tournaments.hrl").
 -include_lib("db/include/scoring.hrl").
 -include_lib("db/include/scoring.hrl").
 -include_lib("stdlib/include/qlc.hrl").
 -include_lib("stdlib/include/qlc.hrl").
+-include_lib("stdlib/include/ms_transform.hrl").
 
 
 online() -> [X||X<-qlc:e(gproc:table()),element(1,X)=={p,l,broadcast}].
 online() -> [X||X<-qlc:e(gproc:table()),element(1,X)=={p,l,broadcast}].
 
 
@@ -474,3 +476,26 @@ qlc_id_creator(Id,Creator,Owner) ->
     qlc:e(qlc:q([Val || {{_,_,_Key},_,Val=#game_table{gameid = _GameId, id = _Id, 
     qlc:e(qlc:q([Val || {{_,_,_Key},_,Val=#game_table{gameid = _GameId, id = _Id, 
                             owner = _Owner, creator = _Creator}} <- 
                             owner = _Owner, creator = _Creator}} <- 
              gproc:table(props), Id == _Id, Creator == _Creator, Owner ==_Owner])).
              gproc:table(props), Id == _Id, Creator == _Creator, Owner ==_Owner])).
+
+campaigns(reveal) -> campaigns(reveal,{2014,4,27},{2014,4,30});
+campaigns(series) -> campaigns(series,{2014,4,27},{2014,4,30}).
+
+campaigns(series,From,To) ->
+    {atomic,Res}=mnesia:transaction(fun() -> mnesia:select(series_event,
+        ets:fun2ms(fun (#series_event{date=T}=S) when T > From, T < To -> S end)) end),
+    lists:keysort(2,lists:foldr(fun series_aggregate/2,[],Res));
+
+campaigns(reveal,From,To) ->
+    {atomic,Res}=mnesia:transaction(fun() -> mnesia:select(reveal_event,
+        ets:fun2ms(fun (#reveal_event{date=T}=S) when T > From, T < To -> S end)) end),
+    lists:keysort(2,lists:foldr(fun reveal_aggregate/2,[],Res)).
+
+series_aggregate(#series_event{score = Count, user = Item}, Acc) ->
+    case lists:keyfind(Item,1,Acc) of
+        {Item,Sum} -> lists:keyreplace(Item,1,Acc,{Item,Count+Sum});
+        false -> [{Item,Count}|Acc] end.
+
+reveal_aggregate(#reveal_event{score = Count, user = Item}, Acc) ->
+    case lists:keyfind(Item,1,Acc) of
+        {Item,Sum} -> lists:keyreplace(Item,1,Acc,{Item,Count+Sum});
+        false -> [{Item,Count}|Acc] end.