Example #1
0
 function execute($param, $post)
 {
     try {
         if (count($param) > 0) {
             if ($param[0] == "act") {
                 $obj = json_decode($post["json"]);
                 if ($obj->Action == "delete") {
                     $guids = array();
                     foreach ($obj->Notes as $note) {
                         $guids[] = $note->Guid;
                     }
                     return ReturnBoolean($this->deleteNotes($obj->NoteTakerGuid, $obj->NoteCollectionGuid, $guids));
                 } else {
                     if ($obj->Action == "addorupdate") {
                         $newNotes = array();
                         $updateNotes = array();
                         $listId = $this->getNoteCollectionId($obj->NoteTakerGuid, $obj->NoteCollectionGuid);
                         if ($listId !== false) {
                             foreach ($obj->Notes as $note) {
                                 $existingNote = GetSingleByCondition("Notes", array("Guid" => $note->Guid, "NoteCollectionId" => $listId));
                                 if ($existingNote == null) {
                                     $newnote = new Note();
                                     $newnote->NoteCollectionId = $listId;
                                     $newnote->Guid = $note->Guid;
                                     $newnote->Content = $note->Content;
                                     $newnote->Description = $note->Description;
                                     $newnote->CreateTime = ConvertToDatabaseDateTime($note->CreateTime);
                                     $newnote->IsCompleted = $note->IsCompleted;
                                     $newNotes[] = $newnote;
                                 } else {
                                     $existingNote->Content = $note->Content;
                                     $existingNote->Description = $note->Description;
                                     $existingNote->CreateTime = ConvertToDatabaseDateTime($note->CreateTime);
                                     $existingNote->IsCompleted = $note->IsCompleted;
                                     $updateNotes[] = $existingNote;
                                 }
                             }
                             $res = InsertAll($newNotes);
                             $res &= UpdateAll($updateNotes);
                             return ReturnBoolean($res == 1);
                         }
                         return ReturnBoolean(false);
                     } else {
                         if ($obj->Action == "get") {
                             $listId = $this->getNoteCollectionId($obj->NoteTakerGuid, $obj->NoteCollectionGuid);
                             if ($listId !== false) {
                                 $notes = GetAllByCondition("Notes", array("NoteCollectionId" => $listId));
                                 $resp = new NoteResponse();
                                 foreach ($notes as $note) {
                                     $resp->Notes[] = new NoteEntity($note);
                                 }
                                 return ReturnJson($resp);
                             }
                             return ReturnBoolean(false);
                         } else {
                             return ReturnError(LINK_INVALID);
                         }
                     }
                 }
             }
         }
         return ReturnError(LINK_INVALID);
     } catch (\Exception $ex) {
         return ReturnError("Exception occured: " . $ex->getMessage());
     }
 }
 function execute($param, $post)
 {
     if (count($param) > 0 && $param[0] == "act") {
         $obj = json_decode($post["json"]);
         $group = GetSingleByCondition(DRINKERCYCLE_TABLE, array("Name" => $obj->Name));
         if ($group instanceof DrinkerCycle) {
             if ($obj->Action == "exists") {
                 $groupRela = GetSingleByCondition(DRINKERCYCLESDRINKERSRELATION_TABLE, array("DrinkerCycleId" => $group->Id));
                 return ReturnBoolean($groupRela != null);
             } else {
                 if ($obj->Action == "add") {
                     $drinker = GetSingleByCondition(DRINKER_TABLE, array("Guid" => $obj->Guid));
                     if ($drinker instanceof Drinker) {
                         $presGroupRelation = GetSingleByCondition(DRINKERCYCLESDRINKERSRELATION_TABLE, array("DrinkerCycleId" => $group->Id, "DrinkerId" => $drinker->Id));
                         if ($presGroupRelation == null) {
                             $groupRela = GetSingleByCondition(DRINKERCYCLESDRINKERSRELATION_TABLE, array("DrinkerCycleId" => $group->Id));
                             $newRela = new DrinkerCyclesDrinkersRelation();
                             $newRela->DrinkerId = $drinker->Id;
                             $newRela->DrinkerCycleId = $group->Id;
                             $newRela->IsAuthenticated = $groupRela == null;
                             return ReturnBoolean(Insert(DRINKERCYCLESDRINKERSRELATION_TABLE, $newRela));
                         }
                         return ReturnBoolean(true);
                     } else {
                         return ReturnNotFound($obj->Guid, "Drinker");
                     }
                 } else {
                     if ($obj->Action == "remove") {
                         $drinker = GetSingleByCondition(DRINKER_TABLE, array("Guid" => $obj->Guid));
                         if ($drinker instanceof Drinker) {
                             $groupRela = GetSingleByCondition(DRINKERCYCLESDRINKERSRELATION_TABLE, array("DrinkerCycleId" => $group->Id, "DrinkerId" => $drinker->Id));
                             if ($groupRela instanceof DrinkerCyclesDrinkersRelation) {
                                 return ReturnBoolean(DeleteById(DRINKERCYCLESDRINKERSRELATION_TABLE, $groupRela->Id));
                             } else {
                                 return RelationNotFound($group->Id, $drinker->Id, DRINKERCYCLESDRINKERSRELATION_TABLE);
                             }
                         } else {
                             return ReturnNotFound($obj->Guid, DRINKER_TABLE);
                         }
                     } else {
                         if ($obj->Action == "authenticate" || $obj->Action == "deauthenticate") {
                             $newVal = true;
                             if ($obj->Action == "deauthenticate") {
                                 $newVal = false;
                             }
                             $drinker = GetSingleByCondition(DRINKER_TABLE, array("Guid" => $obj->Guid));
                             if ($drinker instanceof Drinker) {
                                 $groupRela = GetSingleByCondition(DRINKERCYCLESDRINKERSRELATION_TABLE, array("DrinkerCycleId" => $group->Id, "DrinkerId" => $drinker->Id));
                                 if ($groupRela instanceof DrinkerCyclesDrinkersRelation) {
                                     //can change others status
                                     if ($groupRela->IsAuthenticated) {
                                         $otherDrinker = GetSingleByCondition(DRINKER_TABLE, array("Guid" => $obj->AuthGuid));
                                         if ($otherDrinker instanceof Drinker) {
                                             $otherGroupRela = GetSingleByCondition(DRINKERCYCLESDRINKERSRELATION_TABLE, array("DrinkerCycleId" => $group->Id, "DrinkerId" => $otherDrinker->Id));
                                             if ($otherGroupRela instanceof DrinkerCyclesDrinkersRelation) {
                                                 $otherGroupRela->IsAuthenticated = $newVal;
                                                 return ReturnBoolean(Update(DRINKERCYCLESDRINKERSRELATION_TABLE, $otherGroupRela));
                                             } else {
                                                 return RelationNotFound($group->Id, $otherDrinker->Id, DRINKERCYCLESDRINKERSRELATION_TABLE);
                                             }
                                         } else {
                                             return ReturnNotFound($obj->AuthGuid, "Drinker");
                                         }
                                     } else {
                                         //not authenticated
                                         return ReturnBoolean(false);
                                     }
                                 } else {
                                     return RelationNotFound($group->Id, $drinker->Id, DRINKERCYCLESDRINKERSRELATION_TABLE);
                                 }
                             } else {
                                 return ReturnNotFound($obj->Guid, "Drinker");
                             }
                         } else {
                             if ($obj->Action == "removeforeign") {
                                 $drinker = GetSingleByCondition(DRINKER_TABLE, array("Guid" => $obj->Guid));
                                 if ($drinker instanceof Drinker) {
                                     $groupRela = GetSingleByCondition(DRINKERCYCLESDRINKERSRELATION_TABLE, array("DrinkerCycleId" => $group->Id, "DrinkerId" => $drinker->Id));
                                     if ($groupRela instanceof DrinkerCyclesDrinkersRelation) {
                                         //can change others status
                                         if ($groupRela->IsAuthenticated) {
                                             $otherDrinker = GetSingleByCondition(DRINKER_TABLE, array("Guid" => $obj->AuthGuid));
                                             if ($otherDrinker instanceof Drinker) {
                                                 $otherGroupRela = GetSingleByCondition(DRINKERCYCLESDRINKERSRELATION_TABLE, array("DrinkerCycleId" => $group->Id, "DrinkerId" => $otherDrinker->Id));
                                                 if ($otherGroupRela instanceof DrinkerCyclesDrinkersRelation) {
                                                     return ReturnBoolean(Delete(DRINKERCYCLESDRINKERSRELATION_TABLE, $otherGroupRela));
                                                 } else {
                                                     return RelationNotFound($group->Id, $otherDrinker->Id, DRINKERCYCLESDRINKERSRELATION_TABLE);
                                                 }
                                             } else {
                                                 return ReturnNotFound($obj->AuthGuid, "Drinker");
                                             }
                                         } else {
                                             //not authenticated
                                             return ReturnBoolean(false);
                                         }
                                     } else {
                                         return RelationNotFound($group->Id, $drinker->Id, DRINKERCYCLESDRINKERSRELATION_TABLE);
                                     }
                                 } else {
                                     return ReturnNotFound($obj->Guid, "Drinker");
                                 }
                             } else {
                                 return ReturnError(LINK_INVALID);
                             }
                         }
                     }
                 }
             }
         }
         if ($obj->Action == "exists") {
             return ReturnBoolean(false);
         } else {
             if ($obj->Action == "add") {
                 $newGroup = new DrinkerCycle();
                 $newGroup->Name = $obj->Name;
                 $newGroup->Guid = GenerateGuid();
                 if (Insert(DRINKERCYCLE_TABLE, $newGroup)) {
                     return $this->execute($param, $post);
                 } else {
                     return ReturnCrudError($newGroup, "add");
                 }
             } else {
                 return ReturnNotFound($obj->Guid, DRINKERCYCLE_TABLE);
             }
         }
     } else {
         if (ValidateGuid($param[0])) {
             //construct model puh
             $drinker = GetByGuid("Drinker", $param[0]);
             if ($drinker != null && $drinker instanceof Drinker) {
                 $relations = GetAllByCondition(DRINKERCYCLESDRINKERSRELATION_TABLE, array("DrinkerId" => $drinker->Id));
                 $cyclesEnt = array();
                 $cycles = array();
                 $authCycles = array();
                 foreach ($relations as $relation) {
                     if ($relation instanceof DrinkerCyclesDrinkersRelation) {
                         $cycle = GetById(DRINKERCYCLE_TABLE, $relation->DrinkerCycleId);
                         if ($cycle instanceof DrinkerCycle) {
                             if ($relation->IsAuthenticated) {
                                 $cycl = new DrinkerCycleEntity($cycle);
                                 $cycl->IsAuthenticated = true;
                                 $authCycles[] = $cycle;
                                 $cyclesEnt[] = $cycl;
                             } else {
                                 $cycles[] = $cycle;
                                 $cycl = new DrinkerCycleEntity($cycle);
                                 $cycl->IsAuthenticated = false;
                                 $cyclesEnt[] = $cycl;
                             }
                         }
                     }
                 }
                 $drinkers = array();
                 foreach ($authCycles as $cycle) {
                     $userRelations = GetAllByCondition(DRINKERCYCLESDRINKERSRELATION_TABLE, array("DrinkerCycleId" => $cycle->Id));
                     foreach ($userRelations as $userRelation) {
                         if ($userRelation instanceof DrinkerCyclesDrinkersRelation) {
                             //exclude self
                             if ($drinker->Id != $userRelation->DrinkerId) {
                                 if (!isset($drinkers[$userRelation->DrinkerId])) {
                                     $user = GetById(DRINKER_TABLE, $userRelation->DrinkerId);
                                     if ($user instanceof Drinker) {
                                         $drinkers[$userRelation->DrinkerId] = new DrinkerEntity($user);
                                     }
                                 }
                                 if ($drinkers[$userRelation->DrinkerId] instanceof DrinkerEntity) {
                                     if ($userRelation->IsAuthenticated) {
                                         $drinkers[$userRelation->DrinkerId]->AuthDrinkerCycles[] = $cycle->Guid;
                                     } else {
                                         $drinkers[$userRelation->DrinkerId]->NonAuthDrinkerCycles[] = $cycle->Guid;
                                     }
                                 }
                             }
                         }
                     }
                 }
                 $coll = new DrinkerCycleResponse();
                 $coll->DrinkerCycles = $cyclesEnt;
                 foreach ($drinkers as $drinker) {
                     $coll->Drinkers[] = $drinker;
                 }
                 return json_encode($coll);
             } else {
                 return ReturnNotFound($param[0], "Drinker");
             }
         } else {
             return ReturnError(LINK_INVALID);
         }
     }
 }
Example #3
0
 function execute($param, $post)
 {
     if (count($param) > 0) {
         if ($param[0] == "act") {
             $obj = json_decode($post["json"]);
             $drinker = GetByGuid("Drinker", $obj->Guid);
             if ($drinker instanceof Drinker) {
                 if ($obj->Action == "remove") {
                     $existingBeers = array();
                     foreach ($obj->Beers as $beer) {
                         $existingBeer = GetSingleByCondition("Beers", array("Guid" => $beer->Guid));
                         if ($existingBeer != null) {
                             $existingBeers[] = $existingBeer;
                         }
                     }
                     return ReturnBoolean(DeleteAll($existingBeers) && $this->refreshDrinkerProperties($drinker));
                 } else {
                     if ($obj->Action == "add") {
                         $newBeers = array();
                         foreach ($obj->Beers as $beer) {
                             $existingBeer = GetSingleByCondition("Beers", array("Guid" => $beer->Guid));
                             if ($existingBeer == null) {
                                 $newbeer = new Beer();
                                 $newbeer->Guid = $beer->Guid;
                                 $newbeer->DrinkTime = ConvertToDatabaseDateTime($beer->DrinkTime);
                                 $newbeer->DrinkerId = $drinker->Id;
                                 $newBeers[] = $newbeer;
                             }
                         }
                         return ReturnBoolean(InsertAll($newBeers) && $this->refreshDrinkerProperties($drinker));
                     } else {
                         if ($obj->Action == "sync") {
                             $beercount = $this->countExistingBeers($drinker);
                             if ($beercount !== $obj->ExpectedCount) {
                                 return ReturnBoolean(false);
                             }
                             $beers = GetAllByCondition("Beers", array("DrinkerId" => $drinker->Id), "DrinkTime DESC", " LIMIT " . count($obj->Beers));
                             for ($i = 0; $i < count($beers); $i++) {
                                 if ($beers[$i]->Guid != $obj->Beers[$i]->Guid) {
                                     return ReturnBoolean(false);
                                 }
                             }
                             return ReturnBoolean(true);
                         } else {
                             return ReturnError(LINK_INVALID);
                         }
                     }
                 }
             }
             return ReturnNotFound($param[0], "Drinker");
         } else {
             if (ValidateGuid($param[0])) {
                 $drinker = GetByGuid("Drinker", $param[0]);
                 if ($drinker != null && $drinker instanceof Drinker) {
                     /*
                     $limit = 0;
                     if (count($param) > 1 && is_numeric($param[1])) {
                         $beerCount = $this->countExistingBeers($drinker);
                         if ($beerCount > $param[1]) {
                             $limit = $beerCount - $param[0];
                         }
                     }
                     $limitstring = " LIMIT " . $limit;
                     if ($limit == 0)
                         $limitstring = "";
                     */
                     $beers = GetAllByCondition("Beers", array("DrinkerId" => $drinker->Id), " DrinkTime DESC ");
                     $resp = new BeerResponse();
                     foreach ($beers as $beer) {
                         $resp->Beers[] = new BeerEntity($beer);
                     }
                     return json_encode($resp);
                 } else {
                     return ReturnNotFound($param[0], "Drinker");
                 }
             }
         }
     }
     return ReturnError(LINK_INVALID);
 }
Example #4
0
function GetByGuid($modelName, $guid)
{
    return GetSingleByCondition($modelName . "s", array("Guid" => $guid));
}
 function execute($param, $post)
 {
     if (count($param) > 0) {
         if ($param[0] == "act") {
             $obj = json_decode($post["json"]);
             if ($obj->Action == "remove") {
                 $existingUserConnections = array();
                 foreach ($obj->UserConnections as $userConnection) {
                     $existingUserConnection = GetSingleByCondition("UserConnections", array("Guid" => $userConnection->Guid));
                     if ($existingUserConnection != null) {
                         $existingUserConnections[] = $existingUserConnection;
                     }
                 }
                 return ReturnBoolean(DeleteAll($existingUserConnections));
             } else {
                 if ($obj->Action == "add") {
                     $newUserConnections = array();
                     foreach ($obj->UserConnections as $userConnection) {
                         $existingUserConnection = GetSingleByCondition("UserConnections", array("Guid" => $userConnection->Guid));
                         if ($existingUserConnection == null) {
                             $newuserconnection = new NoteTaker();
                             $newuserconnection->Guid = $userConnection->Guid;
                             $newuserconnection->Color = $userConnection->Color;
                             $newuserconnection->Name = $userConnection->Name;
                             $newuserconnection->ConnectedUserGuid = $userConnection->ConnectedUserGuid;
                             $newuserconnection->UserGuid = $obj->Guid;
                             $newUserConnections[] = $newuserconnection;
                         }
                     }
                     return ReturnBoolean(InsertAll($newUserConnections));
                 } else {
                     if ($obj->Action == "addorupdate") {
                         $newUserConnections = array();
                         $updateUserConnections = array();
                         foreach ($obj->UserConnections as $userConnection) {
                             $existingUserConnection = GetSingleByCondition("UserConnections", array("Guid" => $userConnection->Guid));
                             if ($existingUserConnection == null) {
                                 $newuserconnection = new NoteTaker();
                                 $newuserconnection->Guid = $userConnection->Guid;
                                 $newuserconnection->Color = $userConnection->Color;
                                 $newuserconnection->Name = $userConnection->Name;
                                 $newuserconnection->ConnectedUserGuid = $userConnection->ConnectedUserGuid;
                                 $newuserconnection->UserGuid = $obj->Guid;
                                 $newUserConnections[] = $newuserconnection;
                             } else {
                                 $existingUserConnection->Color = $userConnection->Color;
                                 $existingUserConnection->Name = $userConnection->Name;
                                 $existingUserConnection->ConnectedUserGuid = $userConnection->ConnectedUserGuid;
                                 $existingUserConnection->UserGuid = $obj->Guid;
                                 $updateUserConnections[] = $existingUserConnection;
                             }
                         }
                         return ReturnBoolean(InsertAll($newUserConnections) && UpdateAll($updateUserConnections));
                     } else {
                         if ($obj->Action == "sync") {
                             $userConnectioncount = $this->countExistingUserConnections($obj);
                             if ($userConnectioncount !== $obj->ExpectedCount) {
                                 return ReturnBoolean(false);
                             }
                             $userConnections = GetAllByCondition("UserConnections", array("UserGuid" => $obj->Guid), "Name DESC", " LIMIT " . count($obj->UserConnections));
                             for ($i = 0; $i < count($userConnections); $i++) {
                                 if ($userConnections[$i]->Guid != $obj->UserConnections[$i]->Guid) {
                                     return ReturnBoolean(false);
                                 }
                             }
                             return ReturnBoolean(true);
                         } else {
                             return ReturnError(LINK_INVALID);
                         }
                     }
                 }
             }
         } else {
             if ($param[0] == "checkGUID" && isset($param[1])) {
                 $res = $this->checkForUniqueGuid($param[1]);
                 if ($res == 1) {
                     return ReturnBoolean(true);
                 }
                 return ReturnBoolean(false);
             } else {
                 if ($param[0] == "completeGUID" && isset($param[1])) {
                     $res = $this->getUniqueGuid($param[1]);
                     if ($res !== false) {
                         return ReturnJson(new GuidResponse($res));
                     }
                     return ReturnJson(new GuidResponse("00000000-0000-0000-0000-00000000000"));
                 } else {
                     if (ValidateGuid($param[0])) {
                         $userConnections = GetAllByCondition("UserConnections", array("UserGuid" => $param[0]), "Name DESC");
                         $resp = new UserConnectionResponse();
                         foreach ($userConnections as $userConnection) {
                             $resp->UserConnections[] = new NoteTakerEntity($userConnection);
                         }
                         return ReturnJson($resp);
                     }
                 }
             }
         }
     }
     return ReturnError(LINK_INVALID);
 }