public function testSaveDelete()
 {
     RoyaltyStream::truncate();
     $rs = new RoyaltyStream();
     $rs->stream_file_id = 2;
     $rs->save();
     $this->assertTrue($rs->id != 0);
     $this->assertTrue($rs->created != null);
     $this->assertTrue($rs->updated != null);
     //        $this->assertTrue($rp["deleted"] == 0);
     $rs->delete();
     $this->assertTrue($rs->deleted == 1);
     RoyaltyStream::truncate();
 }
 public function convertToRoyaltyStreams($rpf)
 {
     $payments = RoyaltyPayment::attachedGroupedByPayeeCode($rpf->id)->get();
     $royaltyStreamFiles = [];
     $rollupDeals = [];
     foreach ($payments as $payment) {
         $user = User::where('code', '=', $payment->payee_code)->first();
         if ($user != null) {
             $deal = $this->findOrCreateDeal($user);
             $rollupDeals[] = $deal->id;
             $royaltyStreamFile = $this->saveRoyaltyStreamFile($rpf, $deal);
             $royaltyStreamFiles[] = $royaltyStreamFile;
         }
     }
     RoyaltyStream::loadFromFile($royaltyStreamFiles);
     RoyaltyStream::cleanEmptyStreams();
     $this->runRollupDeals($rollupDeals);
 }
예제 #3
0
 public static function apiStats($id)
 {
     $query = self::query();
     $statsStartDate = new DateTime();
     //get average
     if (sizeof(RoyaltyStreamFile::lastRoyaltyFile($id)->get()) > 0) {
         $lastRoyaltyStreamFile = RoyaltyStreamFile::lastRoyaltyFile($id)->get()[0];
         $statsStartDate->setDate($lastRoyaltyStreamFile->period_year, $lastRoyaltyStreamFile->period_month, 1);
     }
     $last12monthDate = $statsStartDate->modify('-12 month');
     $last12monthAmount = $query->select(DB::raw("SUM(royalty_stream.royalty_amount) as amount"))->join(RoyaltyStreamFile::table() . " as royalty_stream_file", 'royalty_stream_file.deal_id', '=', 'deal.id')->join(RoyaltyStream::table() . " as royalty_stream", 'royalty_stream_file.id', '=', 'stream_file_id')->where('deal_id', $id)->where(DB::raw("CONCAT(royalty_stream_file.period_year, '-',royalty_stream_file.period_month)"), '>=', $last12monthDate)->first()["amount"];
     $query = self::query();
     $last12monthAmountTop5Songs = $query->select('royalty_stream.song_title', DB::raw("SUM(royalty_stream.royalty_amount) as amount"))->join(RoyaltyStreamFile::table() . " as royalty_stream_file", 'royalty_stream_file.deal_id', '=', 'deal.id')->join(RoyaltyStream::table() . " as royalty_stream", 'royalty_stream_file.id', '=', 'stream_file_id')->groupBy('royalty_stream.song_title')->where('deal_id', $id)->orderBy('amount', 'desc')->limit(5)->where(DB::raw("CONCAT(royalty_stream_file.period_year, '-',royalty_stream_file.period_month)"), '>=', $last12monthDate)->get();
     $sum = 0;
     foreach ($last12monthAmountTop5Songs as $song) {
         $sum += $song->amount;
     }
     return ['last_12_month_avg' => $last12monthAmount, 'top_5_song_avg' => $sum];
 }
 public function testEmptyLinesInFile()
 {
     $this->resetEvents();
     $fileName = "with_empty_lines.csv";
     $path = $this->copyFileToTemp($fileName);
     $s = $this->service();
     $companyId = rand(1000, 1000000);
     $fileDetails = ["year" => 2015, "month" => 7];
     $rpf = $s->process($path, $companyId, $fileDetails);
     $this->assertTrue($rpf->status == RoyaltyPaymentFile::STATUS_PAYMENTS_PROCESSED);
     $rpf = $s->processRoyaltyStreams($rpf);
     $this->assertTrue($rpf->status == RoyaltyPaymentFile::STATUS_PROCESSED);
     $payments = RoyaltyPayment::all();
     $this->assertTrue(count($payments) == 4);
     $this->assertTrue($payments[0]->payee_code == 1128);
     $this->assertTrue($payments[1]->payee_code == 1111);
     $this->assertTrue($payments[2]->payee_code == 1545);
     $this->assertTrue($payments[3]->payee_code == 1332);
     $clients = Client::all();
     $this->assertTrue(count($clients) == 4);
     $payeePayments = PayeePayment::all();
     $this->assertTrue(count($payments) == 4);
     $deals = Deal::all();
     $this->assertTrue(count($deals) == 4);
     $streams = RoyaltyStream::all();
     $this->assertTrue(count($streams) == 4);
     $this->assertTrue($streams[0]->song_number == 33959);
     $this->assertTrue($streams[1]->song_number == 14402);
     $this->assertTrue($streams[2]->song_number == 12043);
     $this->assertTrue($streams[3]->song_number == 51311);
     $streamFiles = RoyaltyStreamFile::all();
     $this->assertTrue(count($streamFiles) == 4);
     $this->resetEvents();
 }
예제 #5
0
 public static function cleanEmptyStreams()
 {
     RoyaltyStream::whereNull("stream_file_id")->delete();
 }