Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- use Symfony\Component\HttpFoundation\Response;
- use Symfony\Component\HttpFoundation\Request;
- use Client\Utils;
- require_once __DIR__ . '/../vendor/autoload.php';
- $app = new Silex\Application();
- $app->register(new Silex\Provider\DoctrineServiceProvider(), array(
- 'dbs.options' => array(
- 'mysql_read' => array(
- 'driver' => 'pdo_mysql',
- 'host' => 'funway-prod.c8kofcdrbu67.us-east-1.rds.amazonaws.com',
- 'dbname' => 'funway_prod',
- 'user' => 'root',
- 'password' => 'Colombia2015',
- 'charset' => 'utf8',
- ),
- ),
- ));
- $app->register(new Silex\Provider\MonologServiceProvider(), array(
- 'monolog.logfile' => __DIR__ . '/development.log',
- ));
- $reports = $app['controllers_factory'];
- /**
- * Return number of inactive users.
- * @author Sergio Barbosa <sbarbosa115@gmail.com>
- */
- $reports->get('/behavior-users/{range}/{from_date}/{to_date}/{client_id}', function (Request $request) use($app) {
- $fromDate = $request->get('from_date') ? $request->get('from_date') : date('Y-m-d');
- $toDate = $request->get('to_date') ? $request->get('to_date') : date('Y-m-d');
- $sql = "SELECT route_summary.route, SUM(route_summary.views) AS views
- FROM route_summary
- WHERE route_summary.client_id = {$request->get('client_id')} AND route_summary.created_at BETWEEN '{$fromDate}' AND '{$toDate}'
- GROUP BY route_summary.route ";
- if ($request->get('range') == 'all') {
- $sql .= 'HAVING LENGTH(route_summary.route) BETWEEN 1 AND 100 AND views > 4 ';
- } else {
- $sql .= 'HAVING LENGTH(route_summary.route) BETWEEN 1 AND 100 AND views BETWEEN ' . explode(',', $request->get('range'))[0] . ' AND ' . explode(',', $request->get('range'))[1] . ' ';
- }
- $sql .= "ORDER BY LENGTH(route_summary.route) desc";
- $app['monolog']->addDebug($sql);
- $push = $app['dbs']['mysql_read']->fetchAll($sql);
- $response = '';
- foreach ($push as $entity) {
- if ($entity['route'] && $entity['views']) {
- $response .= trim($entity['route']) . "," . trim($entity['views']) . "\n";
- }
- }
- return new Response($response, 200, array(
- 'Content-Encoding' => 'UTF-8',
- 'Content-Type' => 'text/csv; charset=UTF-8',
- 'Content-Transfer-Encoding' => 'binary'
- ));
- })->bind('behavior_users');
- /**
- * Return number of lose users.
- * @author Sergio Barbosa <sbarbosa115@gmail.com>
- */
- $reports->get('/cohorts/{dateRange}/{interval}/{client_id}', function (Request $request) use($app) {
- if (!file_exists($request->server->get('DOCUMENT_ROOT') . $request->getBasePath() . '/history/')) {
- mkdir($request->server->get('DOCUMENT_ROOT') . $request->getBasePath() . '/history/', 7777);
- }
- $fileRoute = $request->server->get('DOCUMENT_ROOT') . $request->getBasePath() . '/history/' . $request->get('dateRange') . '_' . $request->get('interval') . '.json';
- if (file_exists($fileRoute)) {
- $stream = function () use ($fileRoute) {
- readfile($fileRoute);
- };
- return $app->stream($stream, 200, array(
- 'Content-Type' => 'application/json',
- 'Content-length' => filesize($fileRoute),
- ));
- }
- $firstDate = new \DateTime($request->get('dateRange'));
- $firstDate->sub(new DateInterval('P7D'));
- $cohorts = array();
- for ($j = 0; $j <= 7; $j++) {
- $userCurrentDate = new \DateTime($request->get('dateRange'));
- $userCurrentDate->sub(new DateInterval('P7D'));
- for ($i = 0; $i <= 7; $i++) {
- $sql = "SELECT
- COUNT(*) AS total
- FROM user_visit_summary
- WHERE visits_dates LIKE '%{$userCurrentDate->format('Y-m-d')}%' AND first_date = '{$firstDate->format('Y-m-d')}' AND client_id = {$request->get('client_id')} ";
- $users = $app['dbs']['mysql_read']->fetchAssoc($sql);
- $cohorts[$firstDate->format('Y-m-d')][] = $users['total'];
- $userCurrentDate->add(new \DateInterval('P1D'));
- }
- $firstDate->add(new \DateInterval('P1D'));
- }
- $result = array('result' => $cohorts, 'name' => 'Infome de Retencion');
- file_put_contents($fileRoute, json_encode($result));
- return $app->json($result);
- })->bind('cohort');
- /**
- * Return total rfs statistics
- * @author Sergio Barbosa <sbarbosa115@gmail.com>
- */
- $reports->get('/rfs/{period}/{client_id}', function (Request $request) use($app) {
- $clientId = $request->get('client_id');
- $period = $request->get('period');
- $sql = "SELECT segmentation, newusers_period_{$period} AS newusers_period, avgr_period_{$period} AS avgr_period, avgf_period_{$period} AS avgf_period, avgs_period_{$period} AS avgs_period, period_{$period} AS period
- FROM rfs_total
- WHERE rfs_total.client_id = '{$clientId}'";
- $result = $app['dbs']['mysql_read']->fetchAll($sql);
- return $app->json($result);
- })->bind('rfs');
- $app->mount('/api-rest/v1/', $reports);
- /**
- * Return total rfs statistics
- * @author Sergio Barbosa <sbarbosa115@gmail.com>
- */
- $reports->get('/rfs-session/{segment}/{client_id}/{period}', function (Request $request) use($app) {
- $clientId = $request->get('client_id');
- $period = $request->get('period');
- $segment = $request->get('segment');
- $sql = "SELECT COUNT(user_route_summary_p{$period}.id) AS views, route
- FROM user_route_summary_p{$period}
- WHERE user_route_summary_p{$period}.segment = {$segment} AND user_route_summary_p{$period}.route NOT LIKE '%articulo%' AND user_route_summary_p{$period}.route NOT LIKE '%galeria%'
- AND user_route_summary_p{$period}.client_id = {$clientId}
- GROUP BY user_route_summary_p{$period}.route
- HAVING COUNT(user_route_summary_p{$period}.id) > 5
- ORDER BY LENGTH(user_route_summary_p{$period}.route) desc";
- $app['monolog']->addDebug($sql);
- $entities = $app['dbs']['mysql_read']->fetchAll($sql);
- $response = '';
- foreach ($entities as $entity) {
- if ($entity['route'] && $entity['views']) {
- $response .= trim($entity['route']) . "," . trim($entity['views']) . "\n";
- }
- }
- return new Response($response, 200, array(
- 'Content-Encoding' => 'UTF-8',
- 'Content-Type' => 'text/csv; charset=UTF-8',
- 'Content-Transfer-Encoding' => 'binary'
- ));
- })->bind('rfs_detail');
- $app->mount('/api-rest/v1/', $reports);
- $app->after(function (Request $request, Response $response) {
- $response->headers->set('Access-Control-Allow-Origin', '*');
- });
- $app->run();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement