function run($request) { $customerGroup = EcommerceRole::get_customer_group(); if ($customerGroup) { $allCombos = DB::query("\n\t\t\t\tSELECT \"Group_Members\".\"ID\", \"Group_Members\".\"MemberID\", \"Group_Members\".\"GroupID\"\n\t\t\t\tFROM \"Group_Members\"\n\t\t\t\tWHERE \"Group_Members\".\"GroupID\" = " . $customerGroup->ID . ";"); //make an array of all combos $alreadyAdded = array(); $alreadyAdded[-1] = -1; if ($allCombos) { foreach ($allCombos as $combo) { $alreadyAdded[$combo["MemberID"]] = $combo["MemberID"]; } } $unlistedMembers = Member::get()->exclude(array("ID" => $alreadyAdded))->innerJoin("Order", "\"Order\".\"MemberID\" = \"Member\".\"ID\""); //add combos if ($unlistedMembers->count()) { $existingMembers = $customerGroup->Members(); foreach ($unlistedMembers as $member) { $existingMembers->add($member); DB::alteration_message("Added member to customers: " . $member->Email, "created"); } } } else { DB::alteration_message("NO customer group found", "deleted"); } }
function run($request) { $customerGroup = EcommerceRole::get_customer_group(); if ($customerGroup) { $allCombos = DB::query("\n\t\t\t\tSELECT \"Group_Members\".\"ID\", \"Group_Members\".\"MemberID\", \"Group_Members\".\"GroupID\"\n\t\t\t\tFROM \"Group_Members\"\n\t\t\t\tWHERE \"Group_Members\".\"GroupID\" = " . $customerGroup->ID . ";"); //make an array of all combos $alreadyAdded = array(); $alreadyAdded[-1] = -1; if ($allCombos) { foreach ($allCombos as $combo) { $alreadyAdded[$combo["MemberID"]] = $combo["MemberID"]; } } $unlistedMembers = DataObject::get("Member", $where = "\"Member\".\"ID\" NOT IN (" . implode(",", $alreadyAdded) . ")", $sort = "", $join = "INNER JOIN \"Order\" ON \"Order\".\"MemberID\" = \"Member\".\"ID\""); //add combos if ($unlistedMembers) { $existingMembers = $customerGroup->Members(); foreach ($unlistedMembers as $member) { $existingMembers->add($member); DB::alteration_message("Added member to customers: " . $member->Email, "created"); } } } else { DB::alteration_message("NO customer group found", "deleted"); } }
/** * standard SS method * Make sure the member is added as a customer */ public function onAfterWrite() { $customerGroup = EcommerceRole::get_customer_group(); if ($customerGroup) { $existingMembers = $customerGroup->Members(); if ($existingMembers) { $existingMembers->add($this->owner); } } }
function run($request) { $customerGroup = EcommerceRole::get_customer_group(); $customerPermissionCode = EcommerceConfig::get("EcommerceRole", "customer_permission_code"); if (!$customerGroup) { $customerGroup = new Group(); $customerGroup->Code = EcommerceConfig::get("EcommerceRole", "customer_group_code"); $customerGroup->Title = EcommerceConfig::get("EcommerceRole", "customer_group_name"); $customerGroup->write(); Permission::grant($customerGroup->ID, $customerPermissionCode); DB::alteration_message(EcommerceConfig::get("EcommerceRole", "customer_group_name") . ' Group created', "created"); } elseif (DB::query("SELECT * FROM \"Permission\" WHERE \"GroupID\" = '" . $customerGroup->ID . "' AND \"Code\" LIKE '" . $customerPermissionCode . "'")->numRecords() == 0) { Permission::grant($customerGroup->ID, $customerPermissionCode); DB::alteration_message(EcommerceConfig::get("EcommerceRole", "customer_group_name") . ' permissions granted', "created"); } $customerGroup = EcommerceRole::get_customer_group(); if (!$customerGroup) { user_error("could not create user group"); } else { DB::alteration_message(EcommerceConfig::get("EcommerceRole", "customer_group_name") . ' is ready for use', "created"); } $adminGroup = EcommerceRole::get_admin_group(); $adminCode = EcommerceConfig::get("EcommerceRole", "admin_group_code"); $adminName = EcommerceConfig::get("EcommerceRole", "admin_group_name"); $adminPermissionCode = EcommerceConfig::get("EcommerceRole", "admin_permission_code"); $adminRoleTitle = EcommerceConfig::get("EcommerceRole", "admin_role_title"); if (!$adminGroup) { $adminGroup = new Group(); $adminGroup->Code = $adminCode; $adminGroup->Title = $adminName; $adminGroup->write(); Permission::grant($adminGroup->ID, $adminPermissionCode); DB::alteration_message($adminName . ' Group created', "created"); } elseif (DB::query("SELECT * FROM \"Permission\" WHERE \"GroupID\" = '" . $adminGroup->ID . "' AND \"Code\" LIKE '" . $adminPermissionCode . "'")->numRecords() == 0) { Permission::grant($adminGroup->ID, $adminPermissionCode); DB::alteration_message($adminName . ' permissions granted', "created"); } $permissionRole = DataObject::get_one("PermissionRole", "\"Title\" = '" . $adminRoleTitle . "'"); if (!$permissionRole) { $permissionRole = new PermissionRole(); $permissionRole->Title = $adminRoleTitle; $permissionRole->OnlyAdminCanApply = true; $permissionRole->write(); } if ($permissionRole) { $permissionArray = EcommerceConfig::get("EcommerceRole", "admin_role_permission_codes"); if (is_array($permissionArray) && count($permissionArray) && $permissionRole) { foreach ($permissionArray as $permissionCode) { $permissionRoleCode = DataObject::get_one("PermissionRoleCode", "\"Code\" = '{$permissionCode}'"); if (!$permissionRoleCode) { $permissionRoleCode = new PermissionRoleCode(); $permissionRoleCode->Code = $permissionCode; $permissionRoleCode->RoleID = $permissionRole->ID; $permissionRoleCode->write(); } } } if ($adminGroup) { $existingGroups = $permissionRole->Groups(); $existingGroups->add($adminGroup); } } }
private function addspecialprice() { $task = new EcommerceTaskCreateMemberGroups(); $task->run(false); $customerGroup = EcommerceRole::get_customer_group(); if (!$customerGroup) { die("could not create customer group"); } $group = new Group(); $group->Title = "Discount Customers"; $group->Code = "discountcustomers"; $group->ParentID = $customerGroup->ID; $group->write(); $member = new Member(); $member->FirstName = 'Bob'; $member->Surname = 'Jones'; $member->Email = '*****@*****.**'; $member->Password = '******'; $member->write(); $member->Groups()->add($group); $products = Product::get()->where("ClassName = 'Product'")->sort("RAND()")->limit(2); $this->addExamplePages(4, "Special price for particular customers", $products); $i = 0; foreach ($products as $product) { $i++; $complexObjectPrice = new ComplexPriceObject(); if ($i == 1) { $complexObjectPrice->Price = $product->Price - 1.5; } elseif ($i == 2) { $complexObjectPrice->Percentage = 10; $complexObjectPrice->Reduction = 2.5; } else { $complexObjectPrice->Price = $product->Price - 1.5; $complexObjectPrice->Percentage = 10; $complexObjectPrice->Reduction = 2.5; } $complexObjectPrice->From = date("Y-m-d h:n:s", strtotime("now")); $complexObjectPrice->Until = date("Y-m-d h:n:s", strtotime("next year")); $complexObjectPrice->ProductID = $product->ID; $complexObjectPrice->write(); $complexObjectPrice->Groups()->add($group); $product->Content = "<p><a href=\"Security/login/?BackURL=" . $product->Link() . "\">Login</a> as bob@silverstripe-ecommerce.com, password: test123 to get a special price. You can then <a href=\"Security/logout/?BackURL=" . $product->Link() . "\">log out</a> again to see the original price.</p>"; $this->addToTitle($product, "member price", true); } $variations = ProductVariation::get()->where("ClassName = 'ProductVariation'")->sort("RAND()")->limit(2); $i = 0; foreach ($variations as $variation) { $i++; $complexObjectPrice = new ComplexPriceObject(); if ($i == 1) { $complexObjectPrice->Price = $product->Price - 1.5; } elseif ($i == 2) { $complexObjectPrice->Percentage = 10; $complexObjectPrice->Reduction = 2.5; } else { $complexObjectPrice->Price = $product->Price - 1.5; $complexObjectPrice->Percentage = 10; $complexObjectPrice->Reduction = 2.5; } $complexObjectPrice->Price = $variation->Price - 1.5; $complexObjectPrice->From = date("Y-m-d h:n:s", strtotime("now")); $complexObjectPrice->Until = date("Y-m-d h:n:s", strtotime("next year")); $complexObjectPrice->ProductVariationID = $variation->ID; $complexObjectPrice->write(); $complexObjectPrice->Groups()->add($group); $product = $variation->Product(); $this->addExamplePages(4, "Special price for particular customers for product variations {$i}", $product); $product->Content = "<p><a href=\"Security/login/?BackURL=" . $product->Link() . "\">Login</a> as bob@jones.com, password: test123 to get a special price</p>"; $this->addToTitle($product, "member price", true); } }