1111using Microsoft . AspNetCore . Http ;
1212using api_gateway . Helper ;
1313using Newtonsoft . Json ;
14+ using System . Net ;
15+ using api_gateway . Models . ServiceModels . Location ;
1416
1517// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
1618
@@ -42,22 +44,39 @@ public class PackageController : ControllerBase
4244 [ ProducesResponseType ( StatusCodes . Status500InternalServerError ) ]
4345 public async Task < ActionResult < ICollection < PackageResponseModel > > > Get ( )
4446 {
45- IFlurlResponse response = await $ "{ Constants . PackageApiUrl } /api/packages". GetAsync ( ) ;
47+ IFlurlResponse packageResponse = await $ "{ Constants . PackageApiUrl } /api/packages". GetAsync ( ) ;
48+ var errPackageResponse = packageResponse . GetResponse ( ) ;
4649
47- if ( response . StatusCode >= 500 )
50+ if ( errPackageResponse . StatusCode != HttpStatusCode . OK )
4851 {
49- return StatusCode ( 500 ) ;
52+ return new ObjectResult ( errPackageResponse . Message ) { StatusCode = ( int ) errPackageResponse . StatusCode } ;
5053 }
51- else if ( response . StatusCode >= 400 )
54+
55+ IFlurlResponse locationResponse = await $ "{ Constants . LocationApiUrl } /api/room". GetAsync ( ) ;
56+ var errLocationResponse = locationResponse . GetResponse ( ) ;
57+
58+ if ( errLocationResponse . StatusCode != HttpStatusCode . OK )
5259 {
53- return StatusCode ( 400 ) ;
60+ return new ObjectResult ( errLocationResponse . Message ) { StatusCode = ( int ) errLocationResponse . StatusCode } ;
5461 }
55- else
62+
63+ IFlurlResponse personResponse = await $ "{ Constants . PersonApiUrl } /api/persons". GetAsync ( ) ;
64+ var errPersonResponse = personResponse . GetResponse ( ) ;
65+
66+ if ( errPersonResponse . StatusCode != HttpStatusCode . OK )
5667 {
57- ICollection < PackageServiceModel > serviceModels = await response . GetJsonAsync < ICollection < PackageServiceModel > > ( ) ;
58- ICollection < PackageResponseModel > responseModels = ServiceToResponseModelConverter . ConvertPackages ( serviceModels ) ;
59- return Ok ( responseModels ) ;
68+ return new ObjectResult ( errPersonResponse . Message ) { StatusCode = ( int ) errPersonResponse . StatusCode } ;
6069 }
70+
71+ ICollection < PackageServiceModel > allPackageServiceModels = await packageResponse . GetJsonAsync < ICollection < PackageServiceModel > > ( ) ;
72+ ICollection < Room > allRooms = await locationResponse . GetJsonAsync < ICollection < Room > > ( ) ;
73+ ICollection < PersonServiceModel > allPersonServiceModels = await personResponse . GetJsonAsync < ICollection < PersonServiceModel > > ( ) ;
74+
75+ ICollection < PackageResponseModel > allPackages = ServiceToResponseModelConverter . ConvertPackages ( allPackageServiceModels , allPersonServiceModels , allRooms ) ;
76+
77+
78+ return Ok ( allPackages ) ;
79+
6180 }
6281
6382
@@ -77,26 +96,37 @@ public async Task<ActionResult<ICollection<PackageResponseModel>>> Get()
7796 [ ProducesResponseType ( StatusCodes . Status500InternalServerError ) ]
7897 public async Task < ActionResult < PackageResponseModel > > GetById ( Guid id )
7998 {
80- IFlurlResponse response = await $ "{ Constants . PackageApiUrl } /api/packages/{ id } ". GetAsync ( ) ;
99+ IFlurlResponse packageResponse = await $ "{ Constants . PackageApiUrl } /api/packages/{ id } ". GetAsync ( ) ;
81100
82- if ( response . StatusCode == 404 )
83- {
84- return NotFound ( ) ;
85- }
86- else if ( response . StatusCode >= 400 )
101+ var errPackageResponse = packageResponse . GetResponse ( ) ;
102+
103+ if ( errPackageResponse . StatusCode != HttpStatusCode . OK )
87104 {
88- return StatusCode ( 400 ) ;
105+ return new ObjectResult ( errPackageResponse . Message ) { StatusCode = ( int ) errPackageResponse . StatusCode } ;
89106 }
90- else if ( response . StatusCode >= 500 )
107+ PackageServiceModel packageModel = await packageResponse . GetJsonAsync < PackageServiceModel > ( ) ;
108+
109+ IFlurlResponse personResponse = await $ "{ Constants . PersonApiUrl } /api/persons/{ packageModel . ReceiverId } ". GetAsync ( ) ;
110+ var errPersonResponse = personResponse . GetResponse ( ) ;
111+ PersonServiceModel personModel = null ;
112+
113+ if ( errPersonResponse . StatusCode == HttpStatusCode . OK )
91114 {
92- return StatusCode ( 500 ) ;
115+ personModel = await personResponse . GetJsonAsync < PersonServiceModel > ( ) ;
93116 }
94- else
117+
118+ IFlurlResponse locationResponse = await $ "{ Constants . LocationApiUrl } /api/room/{ packageModel . CollectionPointId } ". GetAsync ( ) ;
119+ var errLocationResponse = locationResponse . GetResponse ( ) ;
120+ Room room = null ;
121+
122+ if ( errLocationResponse . StatusCode == HttpStatusCode . OK )
95123 {
96- PackageServiceModel model = await response . GetJsonAsync < PackageServiceModel > ( ) ;
97- PackageResponseModel responseModel = ServiceToResponseModelConverter . ConvertPackage ( model ) ;
98- return Ok ( responseModel ) ;
124+ room = await locationResponse . GetJsonAsync < Room > ( ) ;
99125 }
126+
127+ PackageResponseModel responseModel = ServiceToResponseModelConverter . ConvertPackage ( packageModel , personModel , room ) ;
128+ return Ok ( responseModel ) ;
129+
100130 }
101131
102132 /// <summary>
@@ -115,11 +145,11 @@ public async Task<ActionResult<PackageResponseModel>> Post(PackageRequestModel r
115145 {
116146 IFlurlResponse response = await $ "{ Constants . PackageApiUrl } /api/packages". PostJsonAsync ( request ) ;
117147
118- if ( response . StatusCode >= 500 )
148+ if ( response . StatusCode >= 500 )
119149 {
120150 return StatusCode ( 500 ) ;
121151 }
122- else if ( response . StatusCode >= 400 )
152+ else if ( response . StatusCode >= 400 )
123153 {
124154 return StatusCode ( 400 ) ;
125155 }
@@ -151,15 +181,15 @@ public async Task<ActionResult> Put(Guid id, PackageRequestModel request)
151181 {
152182 IFlurlResponse response = await $ "{ Constants . PackageApiUrl } /api/packages/{ id } ". PutJsonAsync ( request ) ;
153183
154- if ( response . StatusCode == 404 )
184+ if ( response . StatusCode == 404 )
155185 {
156186 return NotFound ( ) ;
157187 }
158- else if ( response . StatusCode >= 400 )
188+ else if ( response . StatusCode >= 400 )
159189 {
160190 return StatusCode ( 400 ) ;
161191 }
162- else if ( response . StatusCode >= 500 )
192+ else if ( response . StatusCode >= 500 )
163193 {
164194 return StatusCode ( 500 ) ;
165195 }
@@ -189,16 +219,16 @@ public async Task<ActionResult> Put(Guid id, PackageRequestModel request)
189219 public async Task < ActionResult > Delete ( Guid id )
190220 {
191221 IFlurlResponse response = await $ "{ Constants . PackageApiUrl } /api/packages/{ id } ". DeleteAsync ( ) ;
192-
193- if ( response . StatusCode == 404 )
222+
223+ if ( response . StatusCode == 404 )
194224 {
195225 return NotFound ( ) ;
196226 }
197- else if ( response . StatusCode >= 400 )
227+ else if ( response . StatusCode >= 400 )
198228 {
199229 return StatusCode ( 400 ) ;
200230 }
201- else if ( response . StatusCode >= 500 )
231+ else if ( response . StatusCode >= 500 )
202232 {
203233 return StatusCode ( 500 ) ;
204234 }
0 commit comments