示例#1
0
 public function recalcStreams()
 {
     $bannerStreams = BannerStream::all();
     echo '<table border="1"><tr><th>stream</th><th>banner</th><th>client</th><th>price</th><th>recalced price</th><th>difference</th></tr>';
     foreach ($bannerStreams as $bs) {
         $amount = $bs->amount;
         $recalcedAmount = StreamTimelog::whereStreamId($bs->stream_id)->sum('amount');
         if ($recalcedAmount > 0) {
             $diff = number_format(100 * $amount / $recalcedAmount, 2);
         } else {
             if ($amount > 0) {
                 $diff = 'failed';
             }
         }
         if ($diff == '100.00') {
             $diff = '';
             echo '<tr>';
         } else {
             $diff .= '%';
             echo '<tr style="font-weight: bold">';
         }
         echo '<tr>';
         echo '<td>stream#' . $bs->stream_id . '</td>';
         echo '<td>banner#' . $bs->banner_id . '</td>';
         echo '<td>client#' . $bs->banner->client_id . '</td>';
         echo '<td>' . $amount . '</td>';
         echo '<td>' . $recalcedAmount . '</td>';
         echo '<td>' . $diff . '</td>';
         echo '<tr>';
     }
     echo '</table>';
 }
示例#2
0
 public function payStreams()
 {
     $bannerStreams = BannerStream::whereStatus('waiting')->get();
     $faker = $this->faker;
     foreach ($bannerStreams as $bs) {
         $skip = boolval(rand(0, 1));
         if ($skip) {
             continue;
         }
         $banner = $bs->banner;
         $user = $banner->client;
         $stream = $bs->stream;
         $transfer = StreamMapper::pay($user, $banner, $stream);
         $decline = rand(0, 5);
         if ($decline == 4) {
             $bs->status = 'declining';
             $bs->client_comment = $faker->paragraph;
             $bs->save();
             LogMapper::log('banner_declining', $banner->id, $stream->id);
             NotificationMapper::bannerPayDeclining($banner, $stream, $bs->amount);
         } else {
             $bs->status = 'accepted';
             $bs->save();
             LogMapper::log('banner_paid', $banner->id, $stream->id);
             NotificationMapper::bannerPayAccept($banner, $stream, $bs->amount);
         }
     }
 }
示例#3
0
 public function totalAmount()
 {
     $sum = BannerStream::whereBannerId($this->id)->sum('amount');
     return $sum;
 }
示例#4
0
 public static function trackBanner(Banner $banner, Stream $stream, StreamTimelog $streamTimelog)
 {
     $price = $streamTimelog->price();
     $duration = $streamTimelog->duration();
     $pivotBannerStream = BannerStream::whereBannerId($banner->id)->whereStreamId($stream->id)->first();
     $pivotBannerStream->minutes = $pivotBannerStream->minutes + $duration;
     $pivotBannerStream->viewers = $pivotBannerStream->viewers + $streamTimelog->viewers;
     $pivotBannerStream->amount = $pivotBannerStream->amount + $price;
     $pivotBannerStream->save();
     $client = $banner->client;
     $client->balance_blocked = $client->balance_blocked + $price;
     $client->save();
     $usedAmount = BannerStream::whereBannerId($banner->id)->sum('amount');
     if ($banner->amount_limit <= $usedAmount) {
         $banner->is_active = 0;
         $banner->status = 'finished';
         $banner->save();
         NotificationMapper::bannerFinished($banner);
     }
     if ($client->availableBalance() <= 0) {
         $banner->is_active = 0;
         $banner->status = 'finished';
         $banner->save();
         NotificationMapper::emptyBalance($banner);
     }
     return $pivotBannerStream;
 }
示例#5
0
 public function stream($bannerStreamId)
 {
     $bannerStream = BannerStream::findOrFail($bannerStreamId);
     $stream = $bannerStream->stream;
     return view('admin.pages.decline.stream', compact('stream', 'bannerStream'));
 }
示例#6
0
 public static function getPivot(Banner $banner, Stream $stream)
 {
     return BannerStream::whereBannerId($banner->id)->whereStreamId($stream->id)->first();
 }