Skip to content

Commit 3e6f546

Browse files
authored
Merge pull request #688 from bcgov/yj
Yj
2 parents 867dc41 + 63c1bd3 commit 3e6f546

File tree

15 files changed

+347
-65
lines changed

15 files changed

+347
-65
lines changed

database/ddl/STR_DSS_Views_Sprint_15.sql

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@ SELECT do2.organization_id
1010
, do2.managing_organization_id
1111
, do2.upd_dtm
1212
, do2.upd_user_guid
13-
, docp.organization_contact_person_id as notice_of_takedown_contact_id_1
14-
, docp.email_address_dsc as notice_of_takedown_contact_email_1
15-
, docp2.organization_contact_person_id as takedown_request_contact_id_1
16-
, docp2.email_address_dsc as takedown_request_contact_email_1
17-
, docp3.organization_contact_person_id as notice_of_takedown_contact_id_2
18-
, docp3.email_address_dsc as notice_of_takedown_contact_email_2
19-
, docp4.organization_contact_person_id as takedown_request_contact_id_2
20-
, docp4.email_address_dsc as takedown_request_contact_email_2
13+
, docp.organization_contact_person_id as primary_notice_of_takedown_contact_id
14+
, docp.email_address_dsc as primary_notice_of_takedown_contact_email
15+
, docp2.organization_contact_person_id as primary_takedown_request_contact_id
16+
, docp2.email_address_dsc as primary_takedown_request_contact_email
17+
, docp3.organization_contact_person_id as secondary_notice_of_takedown_contact_id
18+
, docp3.email_address_dsc as secondary_notice_of_takedown_contact_email
19+
, docp4.organization_contact_person_id as secondary_takedown_request_contact_id
20+
, docp4.email_address_dsc as secondary_takedown_request_contact_email
2121
FROM dss_organization do2
2222
left join dss_organization_contact_person docp on docp.contacted_through_organization_id = do2.organization_id and docp.email_message_type = 'Notice of Takedown' and docp.is_primary = true
2323
left join dss_organization_contact_person docp2 on docp2.contacted_through_organization_id = do2.organization_id and docp2.email_message_type = 'Takedown Request' and docp2.is_primary = true

postman/str-dss.postman_collection.json

Lines changed: 118 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1605,15 +1605,131 @@
16051605
"method": "GET",
16061606
"header": [],
16071607
"url": {
1608-
"raw": "{{host}}/api/organizations/platforms/592",
1608+
"raw": "{{host}}/api/organizations/platforms/1402",
16091609
"host": [
16101610
"{{host}}"
16111611
],
16121612
"path": [
16131613
"api",
16141614
"organizations",
16151615
"platforms",
1616-
"592"
1616+
"1402"
1617+
]
1618+
}
1619+
},
1620+
"response": []
1621+
},
1622+
{
1623+
"name": "Create Platform",
1624+
"request": {
1625+
"method": "POST",
1626+
"header": [],
1627+
"body": {
1628+
"mode": "raw",
1629+
"raw": "{\r\n \"organizationId\": 0,\r\n \"organizationCd\": \"TESTCD2\",\r\n \"organizationNm\": \"TEST ORG 2\",\r\n \"updDtm\": \"2024-09-27T16:31:12.047Z\",\r\n \"primaryNoticeOfTakedownContactEmail\": \"email1@email.com\",\r\n \"primaryTakedownRequestContactEmail\": \"email2@email.com\",\r\n \"secondaryNoticeOfTakedownContactEmail\": \"email2@email.com\",\r\n \"secondaryTakedownRequestContactEmail\": \"email2@email.com\"\r\n}",
1630+
"options": {
1631+
"raw": {
1632+
"language": "json"
1633+
}
1634+
}
1635+
},
1636+
"url": {
1637+
"raw": "{{host}}/api/organizations/platforms",
1638+
"host": [
1639+
"{{host}}"
1640+
],
1641+
"path": [
1642+
"api",
1643+
"organizations",
1644+
"platforms"
1645+
]
1646+
}
1647+
},
1648+
"response": []
1649+
},
1650+
{
1651+
"name": "Create Sub Platform",
1652+
"request": {
1653+
"method": "POST",
1654+
"header": [],
1655+
"body": {
1656+
"mode": "raw",
1657+
"raw": "{\r\n \"organizationCd\": \"TESTCDSUB11\",\r\n \"organizationNm\": \"TEST ORG Sub 1\",\r\n \"managingOrganizationId\": 1402\r\n}",
1658+
"options": {
1659+
"raw": {
1660+
"language": "json"
1661+
}
1662+
}
1663+
},
1664+
"url": {
1665+
"raw": "{{host}}/api/organizations/platforms/subsidiaries",
1666+
"host": [
1667+
"{{host}}"
1668+
],
1669+
"path": [
1670+
"api",
1671+
"organizations",
1672+
"platforms",
1673+
"subsidiaries"
1674+
]
1675+
}
1676+
},
1677+
"response": []
1678+
},
1679+
{
1680+
"name": "Update Platform",
1681+
"request": {
1682+
"method": "PUT",
1683+
"header": [],
1684+
"body": {
1685+
"mode": "raw",
1686+
"raw": "{\r\n \"organizationNm\": \"TEST ORG11\",\r\n \"updDtm\": \"2024-09-27T18:21:49.159676Z\",\r\n \"primaryNoticeOfTakedownContactEmail\": \"email1@email.com\",\r\n \"primaryTakedownRequestContactEmail\": \"email2@email.com\",\r\n \"secondaryNoticeOfTakedownContactEmail\": \"email2@email.com\",\r\n \"secondaryTakedownRequestContactEmail\": \"email2@email.com\"\r\n}",
1687+
"options": {
1688+
"raw": {
1689+
"language": "json"
1690+
}
1691+
}
1692+
},
1693+
"url": {
1694+
"raw": "{{host}}/api/organizations/platforms/1402",
1695+
"host": [
1696+
"{{host}}"
1697+
],
1698+
"path": [
1699+
"api",
1700+
"organizations",
1701+
"platforms",
1702+
"1402"
1703+
]
1704+
}
1705+
},
1706+
"response": []
1707+
},
1708+
{
1709+
"name": "Update Subsidiary",
1710+
"request": {
1711+
"method": "PUT",
1712+
"header": [],
1713+
"body": {
1714+
"mode": "raw",
1715+
"raw": "{\r\n \"organizationNm\": \"TEST ORG11111\",\r\n \"updDtm\": \"2024-09-27T19:16:10.035433Z\",\r\n \"managingOrganizationId\": 1402\r\n}",
1716+
"options": {
1717+
"raw": {
1718+
"language": "json"
1719+
}
1720+
}
1721+
},
1722+
"url": {
1723+
"raw": "{{host}}/api/organizations/platforms/subsidiaries/1403",
1724+
"host": [
1725+
"{{host}}"
1726+
],
1727+
"path": [
1728+
"api",
1729+
"organizations",
1730+
"platforms",
1731+
"subsidiaries",
1732+
"1403"
16171733
]
16181734
}
16191735
},

server/StrDss.Api/Controllers/OrganizationsController.cs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,5 +130,35 @@ public async Task<ActionResult> UpdatePlatform(PlatformUpdateDto dto, long id)
130130

131131
return Ok();
132132
}
133+
134+
[ApiAuthorize(Permissions.UserWrite)] //todo: use platform_write permission when it's ready in the database
135+
[HttpPost("platforms/subsidiaries", Name = "CreatePlatformSub")]
136+
public async Task<ActionResult> CreatePlatformSub(PlatformSubCreateDto dto)
137+
{
138+
var (errors, id) = await _orgService.CreatePlatformSubAsync(dto);
139+
140+
if (errors.Any())
141+
{
142+
return ValidationUtils.GetValidationErrorResult(errors, ControllerContext);
143+
}
144+
145+
return Ok(id);
146+
}
147+
148+
[ApiAuthorize(Permissions.UserWrite)] //todo: use platform_write permission when it's ready in the database
149+
[HttpPut("platforms/subsidiaries/{id}", Name = "UpdatePlatformSub")]
150+
public async Task<ActionResult> UpdatePlatformSub(PlatformSubUpdateDto dto, long id)
151+
{
152+
dto.OrganizationId = id;
153+
154+
var errors = await _orgService.UpdatePlatformSubAsync(dto);
155+
156+
if (errors.Any())
157+
{
158+
return ValidationUtils.GetValidationErrorResult(errors, ControllerContext);
159+
}
160+
161+
return Ok();
162+
}
133163
}
134164
}

server/StrDss.Data/Entities/DssDbContext.cs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -667,14 +667,6 @@ protected override void OnModelCreating(ModelBuilder modelBuilder)
667667
.ToView("dss_platform_vw");
668668

669669
entity.Property(e => e.ManagingOrganizationId).HasColumnName("managing_organization_id");
670-
entity.Property(e => e.NoticeOfTakedownContactEmail1)
671-
.HasMaxLength(320)
672-
.HasColumnName("notice_of_takedown_contact_email_1");
673-
entity.Property(e => e.NoticeOfTakedownContactEmail2)
674-
.HasMaxLength(320)
675-
.HasColumnName("notice_of_takedown_contact_email_2");
676-
entity.Property(e => e.NoticeOfTakedownContactId1).HasColumnName("notice_of_takedown_contact_id_1");
677-
entity.Property(e => e.NoticeOfTakedownContactId2).HasColumnName("notice_of_takedown_contact_id_2");
678670
entity.Property(e => e.OrganizationCd)
679671
.HasMaxLength(25)
680672
.HasColumnName("organization_cd");
@@ -685,14 +677,22 @@ protected override void OnModelCreating(ModelBuilder modelBuilder)
685677
entity.Property(e => e.OrganizationType)
686678
.HasMaxLength(25)
687679
.HasColumnName("organization_type");
688-
entity.Property(e => e.TakedownRequestContactEmail1)
680+
entity.Property(e => e.PrimaryNoticeOfTakedownContactEmail)
681+
.HasMaxLength(320)
682+
.HasColumnName("primary_notice_of_takedown_contact_email");
683+
entity.Property(e => e.PrimaryNoticeOfTakedownContactId).HasColumnName("primary_notice_of_takedown_contact_id");
684+
entity.Property(e => e.PrimaryTakedownRequestContactEmail)
685+
.HasMaxLength(320)
686+
.HasColumnName("primary_takedown_request_contact_email");
687+
entity.Property(e => e.PrimaryTakedownRequestContactId).HasColumnName("primary_takedown_request_contact_id");
688+
entity.Property(e => e.SecondaryNoticeOfTakedownContactEmail)
689689
.HasMaxLength(320)
690-
.HasColumnName("takedown_request_contact_email_1");
691-
entity.Property(e => e.TakedownRequestContactEmail2)
690+
.HasColumnName("secondary_notice_of_takedown_contact_email");
691+
entity.Property(e => e.SecondaryNoticeOfTakedownContactId).HasColumnName("secondary_notice_of_takedown_contact_id");
692+
entity.Property(e => e.SecondaryTakedownRequestContactEmail)
692693
.HasMaxLength(320)
693-
.HasColumnName("takedown_request_contact_email_2");
694-
entity.Property(e => e.TakedownRequestContactId1).HasColumnName("takedown_request_contact_id_1");
695-
entity.Property(e => e.TakedownRequestContactId2).HasColumnName("takedown_request_contact_id_2");
694+
.HasColumnName("secondary_takedown_request_contact_email");
695+
entity.Property(e => e.SecondaryTakedownRequestContactId).HasColumnName("secondary_takedown_request_contact_id");
696696
entity.Property(e => e.UpdDtm).HasColumnName("upd_dtm");
697697
entity.Property(e => e.UpdUserGuid).HasColumnName("upd_user_guid");
698698
});

server/StrDss.Data/Entities/DssPlatformVw.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,19 @@ public partial class DssPlatformVw
1919

2020
public Guid? UpdUserGuid { get; set; }
2121

22-
public long? NoticeOfTakedownContactId1 { get; set; }
22+
public long? PrimaryNoticeOfTakedownContactId { get; set; }
2323

24-
public string? NoticeOfTakedownContactEmail1 { get; set; }
24+
public string? PrimaryNoticeOfTakedownContactEmail { get; set; }
2525

26-
public long? TakedownRequestContactId1 { get; set; }
26+
public long? PrimaryTakedownRequestContactId { get; set; }
2727

28-
public string? TakedownRequestContactEmail1 { get; set; }
28+
public string? PrimaryTakedownRequestContactEmail { get; set; }
2929

30-
public long? NoticeOfTakedownContactId2 { get; set; }
30+
public long? SecondaryNoticeOfTakedownContactId { get; set; }
3131

32-
public string? NoticeOfTakedownContactEmail2 { get; set; }
32+
public string? SecondaryNoticeOfTakedownContactEmail { get; set; }
3333

34-
public long? TakedownRequestContactId2 { get; set; }
34+
public long? SecondaryTakedownRequestContactId { get; set; }
3535

36-
public string? TakedownRequestContactEmail2 { get; set; }
36+
public string? SecondaryTakedownRequestContactEmail { get; set; }
3737
}

server/StrDss.Data/Mappings/ModelToEntityProfile.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ public ModelToEntityProfile()
3232
CreateMap<RoleUpdateDto, DssUserRole>();
3333
CreateMap<PlatformCreateDto, DssOrganization>();
3434
CreateMap<PlatformUpdateDto, DssOrganization>();
35+
CreateMap<PlatformSubCreateDto, DssOrganization>();
36+
CreateMap<PlatformSubUpdateDto, DssOrganization>();
3537
}
3638
}
3739
}

server/StrDss.Data/Repositories/OrganizationRepository.cs

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ public interface IOrganizationRepository
2929
Task<DssOrganization> CreatePlatformAsync(PlatformCreateDto dto);
3030
Task<bool> DoesOrgCdExist(string orgCd);
3131
Task UpdatePlatformAsync(PlatformUpdateDto dto);
32+
Task<DssOrganization> CreatePlatformSubAsync(PlatformSubCreateDto dto);
33+
Task UpdatePlatformSubAsync(PlatformSubUpdateDto dto);
3234
}
3335
public class OrganizationRepository : RepositoryBase<DssOrganization>, IOrganizationRepository
3436
{
@@ -188,10 +190,10 @@ public async Task<DssOrganization> CreatePlatformAsync(PlatformCreateDto dto)
188190

189191
await _dbSet.AddAsync(entity);
190192

191-
CreateContact(entity, EmailMessageTypes.NoticeOfTakedown, dto.NoticeOfTakedownContactEmail1, true);
192-
CreateContact(entity, EmailMessageTypes.NoticeOfTakedown, dto.NoticeOfTakedownContactEmail2, false);
193-
CreateContact(entity, EmailMessageTypes.TakedownRequest, dto.TakedownRequestContactEmail1, true);
194-
CreateContact(entity, EmailMessageTypes.TakedownRequest, dto.TakedownRequestContactEmail2, false);
193+
CreateContact(entity, EmailMessageTypes.NoticeOfTakedown, dto.PrimaryNoticeOfTakedownContactEmail, true);
194+
CreateContact(entity, EmailMessageTypes.NoticeOfTakedown, dto.SecondaryNoticeOfTakedownContactEmail, false);
195+
CreateContact(entity, EmailMessageTypes.TakedownRequest, dto.PrimaryTakedownRequestContactEmail, true);
196+
CreateContact(entity, EmailMessageTypes.TakedownRequest, dto.SecondaryTakedownRequestContactEmail, false);
195197

196198
return entity;
197199
}
@@ -222,10 +224,10 @@ public async Task UpdatePlatformAsync(PlatformUpdateDto dto)
222224

223225
_mapper.Map(dto, entity);
224226

225-
UpdateContact(entity, EmailMessageTypes.NoticeOfTakedown, dto.NoticeOfTakedownContactEmail1, true);
226-
UpdateContact(entity, EmailMessageTypes.NoticeOfTakedown, dto.NoticeOfTakedownContactEmail2, false);
227-
UpdateContact(entity, EmailMessageTypes.TakedownRequest, dto.TakedownRequestContactEmail1, true);
228-
UpdateContact(entity, EmailMessageTypes.TakedownRequest, dto.TakedownRequestContactEmail2, false);
227+
UpdateContact(entity, EmailMessageTypes.NoticeOfTakedown, dto.PrimaryNoticeOfTakedownContactEmail, true);
228+
UpdateContact(entity, EmailMessageTypes.NoticeOfTakedown, dto.SecondaryNoticeOfTakedownContactEmail, false);
229+
UpdateContact(entity, EmailMessageTypes.TakedownRequest, dto.PrimaryTakedownRequestContactEmail, true);
230+
UpdateContact(entity, EmailMessageTypes.TakedownRequest, dto.SecondaryTakedownRequestContactEmail, false);
229231
}
230232

231233
private void UpdateContact(DssOrganization entity, string messageType, string? emailAddress, bool isPrimary)
@@ -250,5 +252,26 @@ private void UpdateContact(DssOrganization entity, string messageType, string? e
250252
}
251253
}
252254
}
255+
256+
public async Task<DssOrganization> CreatePlatformSubAsync(PlatformSubCreateDto dto)
257+
{
258+
var entity = _mapper.Map<DssOrganization>(dto);
259+
260+
entity.OrganizationCd = dto.OrganizationCd.ToUpperInvariant();
261+
entity.OrganizationType = OrganizationTypes.Platform;
262+
263+
await _dbSet.AddAsync(entity);
264+
265+
return entity;
266+
}
267+
268+
public async Task UpdatePlatformSubAsync(PlatformSubUpdateDto dto)
269+
{
270+
var entity = await _dbSet
271+
.Include(x => x.DssOrganizationContactPeople)
272+
.FirstAsync(x => x.OrganizationId == dto.OrganizationId);
273+
274+
_mapper.Map(dto, entity);
275+
}
253276
}
254277
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
namespace StrDss.Model.OrganizationDtos
2+
{
3+
public interface IPlatformCreateDto
4+
{
5+
public string OrganizationCd { get; set; }
6+
public string OrganizationNm { get; set; }
7+
8+
}
9+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
namespace StrDss.Model.OrganizationDtos
2+
{
3+
public interface IPlatformUpdateDto
4+
{
5+
public long OrganizationId { get; set; }
6+
public string OrganizationNm { get; set; }
7+
}
8+
}
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
namespace StrDss.Model.OrganizationDtos
22
{
3-
public class PlatformCreateDto
3+
public class PlatformCreateDto : IPlatformCreateDto
44
{
55
public string OrganizationCd { get; set; } = null!;
66
public string OrganizationNm { get; set; } = null!;
77
public DateTime UpdDtm { get; set; }
8-
public string? NoticeOfTakedownContactEmail1 { get; set; }
9-
public string? TakedownRequestContactEmail1 { get; set; }
10-
public string? NoticeOfTakedownContactEmail2 { get; set; }
11-
public string? TakedownRequestContactEmail2 { get; set; }
8+
public string? PrimaryNoticeOfTakedownContactEmail { get; set; }
9+
public string? PrimaryTakedownRequestContactEmail { get; set; }
10+
public string? SecondaryNoticeOfTakedownContactEmail { get; set; }
11+
public string? SecondaryTakedownRequestContactEmail { get; set; }
1212
}
1313
}

0 commit comments

Comments
 (0)