Пример #1
0
require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/class.db_feedback.php";
include $_SERVER['DOCUMENT_ROOT'] . "/config/env_variables.php";
set_time_limit(0);
$csvFile = $_SERVER['DOCUMENT_ROOT'] . "/scripts/db_seed/items.csv";
$itemData = parse_csv_file($csvFile);
//var_dump($itemData);
/*$a = DbAuction::find(195);
$a->setField("numBids", 100);

/*return;*/
$faker = Faker\Factory::create();
$reportFrequencies = $_env_reportFrequencies;
seedUsersItemsAndAuctions(1000, 20, 5);
//now get the userIds and auctions for next steps
$userIds = DbUser::listIds();
$auctions = DbAuction::withConditions()->getAsClasses();
seedAuctionBids();
//seedAuctionViews();
seedAuctionWatches();
$soldAuctions = getSoldAuctions($auctions);
seedFeedbacks($soldAuctions);
function parse_csv_file($csvfile)
{
    $csv = array();
    $rowcount = 0;
    if (($handle = fopen($csvfile, "r")) !== FALSE) {
        $max_line_length = defined('MAX_LINE_LENGTH') ? MAX_LINE_LENGTH : 10000;
        $header = fgetcsv($handle, $max_line_length);
        $header_colcount = count($header);
        while (($row = fgetcsv($handle, $max_line_length)) !== FALSE) {
            $row_colcount = count($row);
$feedback = ["score" => $_POST["score"], "comment" => $_POST["comment"]];
if (ValidationOperator::hasEmtpyFields($feedback)) {
    // Create a session for all inputs so that they can be recovered after the page returns
    SessionOperator::setFormInput($feedback);
    // Redirect back
    HelperOperator::redirectTo($redirectUrl);
}
$auctionId = $_POST["auctionId"];
$creatorId = SessionOperator::getUser()->getUserId();
//get the id of receiver
$receiverUsername = $_POST["receiverUsername"];
/* @var DbUser $receiver */
$receiver = DbUser::withConditions("WHERE username = '******'")->first();
//check receiver exists AND there is no existing feedback (we only allow one)
if ($receiver == null or DbFeedback::withConditions("WHERE auctionId = " . $auctionId . " AND creatorId = " . $creatorId . " AND receiverId = " . $receiver->getId())->exists()) {
    HelperOperator::redirectTo($redirectUrl);
}
// Create Feedback
$now = new DateTime("now", new DateTimeZone(TIMEZONE));
$feedback = new DbFeedback(array("auctionId" => $_POST["auctionId"], "creatorId" => SessionOperator::getUser()->getUserId(), "receiverId" => $receiver->getId(), "score" => $_POST["score"], "comment" => $_POST["comment"], "time" => $now->format('Y-m-d H:i:s')));
$feedback->create();
// Notify receiver
$auction = DbAuction::find($auctionId);
$item = DbItem::find($auction->getField("itemId"));
$comment = "You received a feedback from \"" . SessionOperator::getUser()->getUserName() . "\" in your participation in \"";
$comment .= $item->getField("itemName") . " - " . $item->getField("itemBrand") . "\".";
QueryOperator::addNotification($receiver->getId(), $comment, QueryOperator::NOTIFICATION_FEEDBACK_RECEIVED);
// Set feedback session
SessionOperator::setNotification(SessionOperator::FEEDBACK_SENT);
// Return to page
HelperOperator::redirectTo($redirectUrl);
        //}
        $item = new DbItem(array("userId" => $user->getId(), "itemName" => $itemName, "itemBrand" => $faker->randomElement($itemData)["Brand Name"], "categoryId" => $itemCatId, "conditionId" => $faker->numberBetween(1, 4), "itemDescription" => $faker->sentences(3, true), "image" => $faker->randomElement($itemImages)));
        $item->create();
        $numAuctionForItem = $faker->numberBetween(0, $maxAuctionsPerItem - 1);
        for ($x = 0; $x < $numAuctionForItem; $x++) {
            $startPrice = 0.5 * $faker->numberBetween(1, 200);
            if ($faker->boolean($chanceOfGettingTrue = 80)) {
                $reservePrice = $startPrice + 0.5 * $faker->numberBetween(1, 200);
            } else {
                $reservePrice = 0;
            }
            $startTime = $faker->dateTimeBetween('-2 weeks', '+2 months');
            $endTime = new DateTime($startTime->format('Y-m-d H:i:s'));
            $endTime->add(date_interval_create_from_date_string("7 days"));
            //$endTime = $faker->dateTimeBetween('+1 day', '+15 days');
            if ($faker->boolean(20)) {
                $quantity = $faker->numberBetween(1, 10);
            } else {
                $quantity = 1;
            }
            $now = new DateTime();
            if ($now > $startTime) {
                $numViews = $faker->numberBetween(100, 10000);
            } else {
                $numViews = 0;
            }
            $auction = new DbAuction(array("itemId" => $item->getId(), "quantity" => $quantity, "startPrice" => $startPrice, "reservePrice" => $reservePrice, "startTime" => $startTime->format('Y-m-d H:i:s'), "endTime" => $endTime->format('Y-m-d H:i:s'), "views" => $numViews, "reportFrequency" => $faker->randomElement(array_values($reportFrequencies))));
            $auction->create();
        }
    }
}