Skip to content

Commit ed361cd

Browse files
committed
feat: adaptation of sponsor service, factory, serializer and repository to new model
Signed-off-by: romanetar <[email protected]>
1 parent 63d2098 commit ed361cd

File tree

8 files changed

+51
-37
lines changed

8 files changed

+51
-37
lines changed

app/Jobs/Emails/Registration/PromoCodes/SponsorPromoCodeEmail.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,12 @@ public function __construct
5454
$summit = $promo_code->getSummit();
5555
$payload = [];
5656
$sponsor = $promo_code->getSponsor();
57-
$payload[IMailTemplatesConstants::sponsor_tier_name] = $sponsor->getSponsorship()->getType()->getName();
57+
$sponsorships = $sponsor->getSponsorships();
58+
$sponsor_tier_names = [];
59+
foreach ($sponsorships as $sponsorship) {
60+
$sponsor_tier_names[] = $sponsorship->getType()->getType()->getName();
61+
}
62+
$payload[IMailTemplatesConstants::sponsor_tier_name] = implode(',', $sponsor_tier_names);
5863
$payload[IMailTemplatesConstants::promo_code] = $promo_code->getCode();
5964
$payload[IMailTemplatesConstants::company_name] = '';
6065
$company = $sponsor->getCompany();

app/ModelSerializers/Summit/SponsorSerializer.php

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,14 @@ public function serialize($expand = null, array $fields = [], array $relations =
8080
$values['members'] = $members;
8181
}
8282

83+
if (in_array('sponsorships', $relations)) {
84+
$sponsorships = [];
85+
foreach ($sponsor->getSponsorships() as $sponsorship) {
86+
$sponsorships[] = $sponsorship->getType()->getId();
87+
}
88+
$values['sponsorships'] = $sponsorships;
89+
}
90+
8391
if (!empty($expand)) {
8492
$exp_expand = explode(',', $expand);
8593
foreach ($exp_expand as $relation) {
@@ -163,17 +171,22 @@ public function serialize($expand = null, array $fields = [], array $relations =
163171
}
164172
}
165173
break;
166-
case 'sponsorship':
174+
case 'sponsorships':
167175
{
168-
if ($sponsor->hasSponsorship()) {
169-
unset($values['sponsorship_id']);
170-
$values['sponsorship'] = SerializerRegistry::getInstance()->getSerializer($sponsor->getSponsorship())->serialize
171-
(
172-
AbstractSerializer::filterExpandByPrefix($expand, $relation),
173-
AbstractSerializer::filterFieldsByPrefix($fields, $relation),
174-
AbstractSerializer::filterFieldsByPrefix($relations, $relation),
175-
$params
176-
);
176+
$sponsorships = $sponsor->getSponsorships();
177+
if (count($sponsorships) > 0) {
178+
unset($values['sponsorships']);
179+
$sponsorship_types = [];
180+
foreach ($sponsorships as $sponsorship) {
181+
$sponsorship_types[] = SerializerRegistry::getInstance()->getSerializer($sponsorship->getType())->serialize
182+
(
183+
AbstractSerializer::filterExpandByPrefix($expand, $relation),
184+
AbstractSerializer::filterFieldsByPrefix($fields, $relation),
185+
AbstractSerializer::filterFieldsByPrefix($relations, $relation),
186+
$params
187+
);
188+
}
189+
$values['sponsorships'] = $sponsorship_types;
177190
}
178191
}
179192
break;

app/Models/Foundation/Summit/Factories/SponsorFactory.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
* See the License for the specific language governing permissions and
1212
* limitations under the License.
1313
**/
14+
15+
use models\exceptions\ValidationException;
1416
use models\summit\Sponsor;
1517
/**
1618
* Class SponsorFactory
@@ -30,14 +32,15 @@ public static function build(array $data):Sponsor{
3032
* @param Sponsor $sponsor
3133
* @param array $data
3234
* @return Sponsor
35+
* @throws ValidationException
3336
*/
3437
public static function populate(Sponsor $sponsor, array $data):Sponsor{
3538

3639
if(isset($data['company']))
3740
$sponsor->setCompany($data['company']);
3841

3942
if(isset($data['sponsorship']))
40-
$sponsor->setSponsorship($data['sponsorship']);
43+
$sponsor->addSponsorship($data['sponsorship']);
4144

4245
if(isset($data['featured_event']))
4346
$sponsor->setFeaturedEvent($data['featured_event']);

app/Models/Foundation/Summit/Sponsor.php

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ class Sponsor extends SilverstripeBaseModel implements IOrderable
5151
'getCarouselAdvertiseImageId' => 'carousel_advertise_image',
5252
'getFeaturedEventId' => 'featured_event',
5353
'getCompanyId' => 'company',
54-
'getSponsorshipId' => 'sponsorship',
5554
];
5655

5756
protected $hasPropertyMappings = [
@@ -61,7 +60,6 @@ class Sponsor extends SilverstripeBaseModel implements IOrderable
6160
'hasCarouselAdvertiseImage' => 'carousel_advertise_image',
6261
'hasFeaturedEvent' => 'featured_event',
6362
'hasCompany' => 'company',
64-
'hasSponsorship' => 'sponsorship',
6563
];
6664

6765
/**
@@ -289,22 +287,6 @@ public function setCompany(Company $company): void
289287
$this->company = $company;
290288
}
291289

292-
/**
293-
* @return SummitSponsorshipType
294-
*/
295-
public function getSponsorship(): ?SummitSponsorshipType
296-
{
297-
return $this->sponsorship;
298-
}
299-
300-
/**
301-
* @param SummitSponsorshipType $sponsorship
302-
*/
303-
public function setSponsorship(SummitSponsorshipType $sponsorship): void
304-
{
305-
$this->sponsorship = $sponsorship;
306-
}
307-
308290
/**
309291
* @return Member[]
310292
*/
@@ -962,7 +944,7 @@ public function clearLeadReportSetting()
962944
/**
963945
* @return SummitSponsorship[]
964946
*/
965-
public function getSponsorships(): array|ArrayCollection
947+
public function getSponsorships()
966948
{
967949
return $this->sponsorships;
968950
}

app/Repositories/Summit/DoctrineSponsorRepository.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,9 @@ protected function applyExtraJoins(QueryBuilder $query, ?Filter $filter = null,
6767
(!is_null($order) && $order->hasOrder("sponsorship_name")) ||
6868
(!is_null($order) && $order->hasOrder("sponsorship_size"))
6969
)
70-
$query = $query->leftJoin("e.sponsorship", "sp")
71-
->leftJoin("sp.type", "st");
70+
$query = $query->leftJoin("e.sponsorships", "sp")
71+
->leftJoin("sp.type", "ssp")
72+
->leftJoin("ssp.type", "st");
7273

7374
return $query;
7475
}

app/Services/Model/Imp/SummitSponsorService.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
use models\summit\SponsorSocialNetwork;
4040
use models\summit\Summit;
4141
use models\summit\SummitLeadReportSetting;
42+
use models\summit\SummitSponsorship;
4243
use services\model\ISummitSponsorService;
4344

4445
/**
@@ -190,8 +191,11 @@ public function updateSponsor(Summit $summit, int $sponsor_id, array $payload):
190191
if (!is_null($company))
191192
$payload['company'] = $company;
192193

193-
if (!is_null($sponsorship_type))
194-
$payload['sponsorship'] = $sponsorship_type;
194+
if (!is_null($sponsorship_type)) {
195+
$sponsorship = new SummitSponsorship();
196+
$sponsorship->setType($sponsorship_type);
197+
$payload['sponsorship'] = $sponsorship;
198+
}
195199

196200
$sponsor = SponsorFactory::populate($summit_sponsor, $payload);
197201

tests/InsertSummitTestData.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
use models\summit\SummitOrder;
6363
use models\summit\SummitRegistrationDiscountCode;
6464
use models\summit\SummitRegistrationPromoCode;
65+
use models\summit\SummitSponsorship;
6566
use models\summit\SummitSponsorshipType;
6667
use models\summit\SummitTicketType;
6768
use models\summit\SummitVenue;
@@ -820,7 +821,12 @@ protected static function insertSummitTestData(){
820821
$s->setVideoLink(sprintf("https://%s.%s.video.com", $i, str_random(16)));
821822
$s->setChatLink(sprintf("https://%s.%s.chat.com", $i, str_random(16)));
822823
$s->setExternalLink(sprintf("https://%s.%s.exterma;.com", $i, str_random(16)));
823-
$s->setSponsorship(self::$default_summit_sponsor_type);
824+
825+
$sps = new SummitSponsorship();
826+
$sps->setType(self::$default_summit_sponsor_type);
827+
self::$em->persist($sps);
828+
829+
$s->addSponsorship($sps);
824830

825831
for($j = 0; $j < 10; $j ++){
826832

tests/OAuth2SummitSponsorApiTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ public function testGetAllSponsorsBySummit(){
133133
$params = [
134134
'id' => self::$summit->getId(),
135135
'filter'=> 'company_name=@'.substr(self::$companies[0]->getName(),0,3),
136-
'expand' => 'company,sponsorship,sponsorship.type,extra_questions',
136+
'expand' => 'company,sponsorships,sponsorships.type,extra_questions',
137137
'order' => '-sponsorship_name'
138138
];
139139

0 commit comments

Comments
 (0)