diff --git a/.DS_Store b/.DS_Store index 73e17ac..61bd139 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/mobile-courier-app.xcodeproj/project.pbxproj b/mobile-courier-app.xcodeproj/project.pbxproj index 4ab062b..4504475 100644 --- a/mobile-courier-app.xcodeproj/project.pbxproj +++ b/mobile-courier-app.xcodeproj/project.pbxproj @@ -7,14 +7,10 @@ objects = { /* Begin PBXBuildFile section */ - 1B0557F62BE9074100367124 /* AuthEndpoints.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B0557F52BE9074100367124 /* AuthEndpoints.swift */; }; 1B07BC8D2BFD677900D8B149 /* RippleSpinnerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B07BC8C2BFD677900D8B149 /* RippleSpinnerView.swift */; }; 1B2DDEF22C1E7C95003EC97C /* WithdrawnPackagesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B2DDEF12C1E7C95003EC97C /* WithdrawnPackagesView.swift */; }; 1B2DDEF42C1E7DD4003EC97C /* PackagePlaceholderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B2DDEF32C1E7DD4003EC97C /* PackagePlaceholderView.swift */; }; 1B2DDEF62C1E9202003EC97C /* WithdrawnPackagesViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B2DDEF52C1E9202003EC97C /* WithdrawnPackagesViewModel.swift */; }; - 1B2DDEF82C1E93B6003EC97C /* PackagesModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B2DDEF72C1E93B6003EC97C /* PackagesModel.swift */; }; - 1B2DDEFE2C1E95D3003EC97C /* PackagesRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B2DDEFD2C1E95D3003EC97C /* PackagesRepository.swift */; }; - 1B2DDF002C1E96B8003EC97C /* PackageEndpoints.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B2DDEFF2C1E96B8003EC97C /* PackageEndpoints.swift */; }; 1B2DDF022C1E9AC8003EC97C /* WithdrawnPackagesViewModelMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B2DDF012C1E9AC8003EC97C /* WithdrawnPackagesViewModelMock.swift */; }; 1B2DDF042C1E9B12003EC97C /* PackagesRepositoryMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B2DDF032C1E9B12003EC97C /* PackagesRepositoryMock.swift */; }; 1B2DDF062C1E9F85003EC97C /* GroupedPackageRowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B2DDF052C1E9F85003EC97C /* GroupedPackageRowView.swift */; }; @@ -35,34 +31,27 @@ 1B58EFA92BE6C0070066F447 /* BorderedViewModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B58EFA82BE6C0070066F447 /* BorderedViewModifier.swift */; }; 1B58EFAB2BE6C1F30066F447 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1B58EFAA2BE6C1F30066F447 /* LaunchScreen.storyboard */; }; 1B58EFAE2BE6C2BE0066F447 /* CourierTextFieldStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B58EFAD2BE6C2BE0066F447 /* CourierTextFieldStyle.swift */; }; - 1B58EFB92BE729D20066F447 /* Endpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B58EFB82BE729D20066F447 /* Endpoint.swift */; }; 1B5E849F2C267F9600EDFDE2 /* DIContainerProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B5E849E2C267F9600EDFDE2 /* DIContainerProtocol.swift */; }; 1B5E84A12C267FE200EDFDE2 /* AppDIContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B5E84A02C267FE200EDFDE2 /* AppDIContainer.swift */; }; - 1B5EBFFE2C081DDA003BC2D9 /* AuthData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B5EBFFD2C081DDA003BC2D9 /* AuthData.swift */; }; + 1B64291C2C3E27310001AD58 /* JustACourierAppData in Frameworks */ = {isa = PBXBuildFile; productRef = 1B64291B2C3E27310001AD58 /* JustACourierAppData */; }; 1B6590E02C22853400D46A27 /* PackagesForWithdrawalView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B6590DF2C22853400D46A27 /* PackagesForWithdrawalView.swift */; }; 1B6590E22C22856F00D46A27 /* PackagesForWithdrawalViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B6590E12C22856F00D46A27 /* PackagesForWithdrawalViewModel.swift */; }; 1B6590E42C228DD700D46A27 /* PackagesForWithdrawalViewModelMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B6590E32C228DD700D46A27 /* PackagesForWithdrawalViewModelMock.swift */; }; + 1B6D70972C3E23F1003E2781 /* JustACourierAppDomain in Frameworks */ = {isa = PBXBuildFile; productRef = 1B6D70962C3E23F1003E2781 /* JustACourierAppDomain */; }; 1B6D75172C23BE5E0067BB56 /* GroupedPackageReadyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B6D75162C23BE5E0067BB56 /* GroupedPackageReadyView.swift */; }; 1B6D75192C23BFB30067BB56 /* RoundedIndicatorViewModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B6D75182C23BFB30067BB56 /* RoundedIndicatorViewModifier.swift */; }; 1B6D751C2C23DF910067BB56 /* ShipmentDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B6D751B2C23DF910067BB56 /* ShipmentDetailView.swift */; }; 1B6E61772C3642E600562112 /* JustACourierAppDomain in Frameworks */ = {isa = PBXBuildFile; productRef = 1B6E61762C3642E600562112 /* JustACourierAppDomain */; }; - 1B6F7C312C2BA621005F0476 /* Data+Data.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B6F7C302C2BA621005F0476 /* Data+Data.swift */; }; 1B6F7C332C2BA9D6005F0476 /* RippleSpinnerModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B6F7C322C2BA9D6005F0476 /* RippleSpinnerModifier.swift */; }; - 1B821F192C1AA50600ED1795 /* CustomSessionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B821F182C1AA50600ED1795 /* CustomSessionDelegate.swift */; }; 1B85000E2C10033D006E96A0 /* ToastView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B85000D2C10033D006E96A0 /* ToastView.swift */; }; 1B8500102C1004D0006E96A0 /* ToastModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B85000F2C1004D0006E96A0 /* ToastModifier.swift */; }; 1B8500152C100DF1006E96A0 /* ProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B8500142C100DF1006E96A0 /* ProfileView.swift */; }; - 1B85E8E22BFC4DAE003040CC /* LoginModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B85E8E12BFC4DAE003040CC /* LoginModel.swift */; }; - 1B85E8EA2BFC4E85003040CC /* AuthRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B85E8E92BFC4E85003040CC /* AuthRepository.swift */; }; 1B8B0A442C1BDDE600D1A7AC /* HeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B8B0A432C1BDDE600D1A7AC /* HeaderView.swift */; }; - 1B9274CB2C1156C6008F4FA3 /* AppData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B9274CA2C1156C6008F4FA3 /* AppData.swift */; }; - 1B9274CD2C1158E0008F4FA3 /* AddressEndpoints.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B9274CC2C1158E0008F4FA3 /* AddressEndpoints.swift */; }; - 1B9274D02C115AF1008F4FA3 /* AddressesModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B9274CF2C115AF1008F4FA3 /* AddressesModel.swift */; }; + 1B96E9AF2C3E1A3000ECC3F6 /* JustACourierAppDomain in Frameworks */ = {isa = PBXBuildFile; productRef = 1B96E9AE2C3E1A3000ECC3F6 /* JustACourierAppDomain */; }; + 1B96E9B22C3E1A4500ECC3F6 /* JustACourierAppData in Frameworks */ = {isa = PBXBuildFile; productRef = 1B96E9B12C3E1A4500ECC3F6 /* JustACourierAppData */; }; 1B98EDCC2C37902800FD5F04 /* JustACourierAppDomain in Frameworks */ = {isa = PBXBuildFile; productRef = 1B98EDCB2C37902800FD5F04 /* JustACourierAppDomain */; }; - 1B99600F2C12992F00976BBC /* AddressRespository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B99600E2C12992F00976BBC /* AddressRespository.swift */; }; 1BA99DD32C2A6712003D38F8 /* SettingsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1BA99DD22C2A6712003D38F8 /* SettingsViewModel.swift */; }; 1BAB0EE62BFEE2D9004DF155 /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = 1BAB0EE52BFEE2D9004DF155 /* Localizable.xcstrings */; }; - 1BAED3D72C379BBA0001E6C3 /* JustACourierAppDomain in Frameworks */ = {isa = PBXBuildFile; productRef = 1BAED3D62C379BBA0001E6C3 /* JustACourierAppDomain */; }; 1BC0717A2C140C6A006EC08E /* HomeViewModelMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1BC071792C140C6A006EC08E /* HomeViewModelMock.swift */; }; 1BC0717C2C140CA9006EC08E /* AddressesRepositoryMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1BC0717B2C140CA9006EC08E /* AddressesRepositoryMock.swift */; }; 1BC0717E2C140F86006EC08E /* ShipmentRowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1BC0717D2C140F86006EC08E /* ShipmentRowView.swift */; }; @@ -73,7 +62,6 @@ 1BE58CAE2C05757000C7DF63 /* AuthRepositorySpy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1BE58CAD2C05757000C7DF63 /* AuthRepositorySpy.swift */; }; 1BE58CB02C05757C00C7DF63 /* StorageSpy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1BE58CAF2C05757C00C7DF63 /* StorageSpy.swift */; }; 1BE58CB32C0585C400C7DF63 /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1BE58CB22C0585C400C7DF63 /* HomeView.swift */; }; - 1BE63F6D2BE9193E0016A26E /* APIRequestClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1BE63F6C2BE9193E0016A26E /* APIRequestClient.swift */; }; 1BE63F712BE980D60016A26E /* Storage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1BE63F702BE980D60016A26E /* Storage.swift */; }; 1BE7837B2C2E503000D2093E /* AccessibilityIdentifiers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1BE7837A2C2E503000D2093E /* AccessibilityIdentifiers.swift */; }; 1BE7837E2C2E61BE00D2093E /* LoginScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1BE7837D2C2E61BE00D2093E /* LoginScreen.swift */; }; @@ -82,10 +70,6 @@ 1BE783852C2E630000D2093E /* XCUIElement+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1BE783842C2E630000D2093E /* XCUIElement+Extensions.swift */; }; 1BEE841F2C17D6FF00B8A367 /* RowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1BEE841E2C17D6FF00B8A367 /* RowView.swift */; }; 1BFD1EAF2C2A688B002E4232 /* SettingsViewModelMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1BFD1EAE2C2A688B002E4232 /* SettingsViewModelMock.swift */; }; - 1BFD1EC02C2A838D002E4232 /* Login.json in Resources */ = {isa = PBXBuildFile; fileRef = 1BFD1EBF2C2A838D002E4232 /* Login.json */; }; - 1BFD1EC22C2A83D5002E4232 /* Address.json in Resources */ = {isa = PBXBuildFile; fileRef = 1BFD1EC12C2A83D5002E4232 /* Address.json */; }; - 1BFD1EC42C2A841C002E4232 /* PackagesForWithdrawl.json in Resources */ = {isa = PBXBuildFile; fileRef = 1BFD1EC32C2A841C002E4232 /* PackagesForWithdrawl.json */; }; - 1BFD1EC62C2A843A002E4232 /* WithdrawnPackages.json in Resources */ = {isa = PBXBuildFile; fileRef = 1BFD1EC52C2A843A002E4232 /* WithdrawnPackages.json */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -106,14 +90,10 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 1B0557F52BE9074100367124 /* AuthEndpoints.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthEndpoints.swift; sourceTree = ""; }; 1B07BC8C2BFD677900D8B149 /* RippleSpinnerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RippleSpinnerView.swift; sourceTree = ""; }; 1B2DDEF12C1E7C95003EC97C /* WithdrawnPackagesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WithdrawnPackagesView.swift; sourceTree = ""; }; 1B2DDEF32C1E7DD4003EC97C /* PackagePlaceholderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PackagePlaceholderView.swift; sourceTree = ""; }; 1B2DDEF52C1E9202003EC97C /* WithdrawnPackagesViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WithdrawnPackagesViewModel.swift; sourceTree = ""; }; - 1B2DDEF72C1E93B6003EC97C /* PackagesModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PackagesModel.swift; sourceTree = ""; }; - 1B2DDEFD2C1E95D3003EC97C /* PackagesRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PackagesRepository.swift; sourceTree = ""; }; - 1B2DDEFF2C1E96B8003EC97C /* PackageEndpoints.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PackageEndpoints.swift; sourceTree = ""; }; 1B2DDF012C1E9AC8003EC97C /* WithdrawnPackagesViewModelMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WithdrawnPackagesViewModelMock.swift; sourceTree = ""; }; 1B2DDF032C1E9B12003EC97C /* PackagesRepositoryMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PackagesRepositoryMock.swift; sourceTree = ""; }; 1B2DDF052C1E9F85003EC97C /* GroupedPackageRowView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupedPackageRowView.swift; sourceTree = ""; }; @@ -138,29 +118,19 @@ 1B58EFA82BE6C0070066F447 /* BorderedViewModifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BorderedViewModifier.swift; sourceTree = ""; }; 1B58EFAA2BE6C1F30066F447 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = ""; }; 1B58EFAD2BE6C2BE0066F447 /* CourierTextFieldStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CourierTextFieldStyle.swift; sourceTree = ""; }; - 1B58EFB82BE729D20066F447 /* Endpoint.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Endpoint.swift; sourceTree = ""; }; 1B5E849E2C267F9600EDFDE2 /* DIContainerProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DIContainerProtocol.swift; sourceTree = ""; }; 1B5E84A02C267FE200EDFDE2 /* AppDIContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDIContainer.swift; sourceTree = ""; }; - 1B5EBFFD2C081DDA003BC2D9 /* AuthData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthData.swift; sourceTree = ""; }; 1B6590DF2C22853400D46A27 /* PackagesForWithdrawalView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PackagesForWithdrawalView.swift; sourceTree = ""; }; 1B6590E12C22856F00D46A27 /* PackagesForWithdrawalViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PackagesForWithdrawalViewModel.swift; sourceTree = ""; }; 1B6590E32C228DD700D46A27 /* PackagesForWithdrawalViewModelMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PackagesForWithdrawalViewModelMock.swift; sourceTree = ""; }; 1B6D75162C23BE5E0067BB56 /* GroupedPackageReadyView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupedPackageReadyView.swift; sourceTree = ""; }; 1B6D75182C23BFB30067BB56 /* RoundedIndicatorViewModifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoundedIndicatorViewModifier.swift; sourceTree = ""; }; 1B6D751B2C23DF910067BB56 /* ShipmentDetailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShipmentDetailView.swift; sourceTree = ""; }; - 1B6F7C302C2BA621005F0476 /* Data+Data.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Data+Data.swift"; sourceTree = ""; }; 1B6F7C322C2BA9D6005F0476 /* RippleSpinnerModifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RippleSpinnerModifier.swift; sourceTree = ""; }; - 1B821F182C1AA50600ED1795 /* CustomSessionDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomSessionDelegate.swift; sourceTree = ""; }; 1B85000D2C10033D006E96A0 /* ToastView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToastView.swift; sourceTree = ""; }; 1B85000F2C1004D0006E96A0 /* ToastModifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToastModifier.swift; sourceTree = ""; }; 1B8500142C100DF1006E96A0 /* ProfileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileView.swift; sourceTree = ""; }; - 1B85E8E12BFC4DAE003040CC /* LoginModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginModel.swift; sourceTree = ""; }; - 1B85E8E92BFC4E85003040CC /* AuthRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthRepository.swift; sourceTree = ""; }; 1B8B0A432C1BDDE600D1A7AC /* HeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HeaderView.swift; sourceTree = ""; }; - 1B9274CA2C1156C6008F4FA3 /* AppData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppData.swift; sourceTree = ""; }; - 1B9274CC2C1158E0008F4FA3 /* AddressEndpoints.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddressEndpoints.swift; sourceTree = ""; }; - 1B9274CF2C115AF1008F4FA3 /* AddressesModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddressesModel.swift; sourceTree = ""; }; - 1B99600E2C12992F00976BBC /* AddressRespository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddressRespository.swift; sourceTree = ""; }; 1BA99DD22C2A6712003D38F8 /* SettingsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsViewModel.swift; sourceTree = ""; }; 1BAB0EE52BFEE2D9004DF155 /* Localizable.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; path = Localizable.xcstrings; sourceTree = ""; }; 1BC071792C140C6A006EC08E /* HomeViewModelMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewModelMock.swift; sourceTree = ""; }; @@ -173,7 +143,6 @@ 1BE58CAD2C05757000C7DF63 /* AuthRepositorySpy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthRepositorySpy.swift; sourceTree = ""; }; 1BE58CAF2C05757C00C7DF63 /* StorageSpy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StorageSpy.swift; sourceTree = ""; }; 1BE58CB22C0585C400C7DF63 /* HomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeView.swift; sourceTree = ""; }; - 1BE63F6C2BE9193E0016A26E /* APIRequestClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIRequestClient.swift; sourceTree = ""; }; 1BE63F702BE980D60016A26E /* Storage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Storage.swift; sourceTree = ""; }; 1BE63F722BE98ADD0016A26E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; 1BE7837A2C2E503000D2093E /* AccessibilityIdentifiers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccessibilityIdentifiers.swift; sourceTree = ""; }; @@ -183,10 +152,6 @@ 1BE783842C2E630000D2093E /* XCUIElement+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "XCUIElement+Extensions.swift"; sourceTree = ""; }; 1BEE841E2C17D6FF00B8A367 /* RowView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RowView.swift; sourceTree = ""; }; 1BFD1EAE2C2A688B002E4232 /* SettingsViewModelMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsViewModelMock.swift; sourceTree = ""; }; - 1BFD1EBF2C2A838D002E4232 /* Login.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = Login.json; sourceTree = ""; }; - 1BFD1EC12C2A83D5002E4232 /* Address.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = Address.json; sourceTree = ""; }; - 1BFD1EC32C2A841C002E4232 /* PackagesForWithdrawl.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = PackagesForWithdrawl.json; sourceTree = ""; }; - 1BFD1EC52C2A843A002E4232 /* WithdrawnPackages.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = WithdrawnPackages.json; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -194,9 +159,12 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 1B6D70972C3E23F1003E2781 /* JustACourierAppDomain in Frameworks */, 1B98EDCC2C37902800FD5F04 /* JustACourierAppDomain in Frameworks */, + 1B64291C2C3E27310001AD58 /* JustACourierAppData in Frameworks */, 1B6E61772C3642E600562112 /* JustACourierAppDomain in Frameworks */, - 1BAED3D72C379BBA0001E6C3 /* JustACourierAppDomain in Frameworks */, + 1B96E9B22C3E1A4500ECC3F6 /* JustACourierAppData in Frameworks */, + 1B96E9AF2C3E1A3000ECC3F6 /* JustACourierAppDomain in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -276,7 +244,6 @@ children = ( 1B5E849D2C267F7B00EDFDE2 /* App */, 1B85E8EB2BFC4EAB003040CC /* Presentation */, - 1B85E8E42BFC4E00003040CC /* Data */, 1BE63F722BE98ADD0016A26E /* Info.plist */, 1B58EFA62BE6BFD70066F447 /* Utilities */, 1B58EF7A2BE6BBEA0066F447 /* Assets.xcassets */, @@ -352,20 +319,6 @@ path = Styles; sourceTree = ""; }; - 1B58EFAF2BE6E9D00066F447 /* Networking */ = { - isa = PBXGroup; - children = ( - 1B6F7C2F2C2BA601005F0476 /* Extensions */, - 1BFD1EBE2C2A836F002E4232 /* MockFiles */, - 1B9274CE2C1158E6008F4FA3 /* Endpoints */, - 1B85E8E02BFC4D9F003040CC /* Models */, - 1BE63F6C2BE9193E0016A26E /* APIRequestClient.swift */, - 1B9274CA2C1156C6008F4FA3 /* AppData.swift */, - 1B821F182C1AA50600ED1795 /* CustomSessionDelegate.swift */, - ); - path = Networking; - sourceTree = ""; - }; 1B5E849D2C267F7B00EDFDE2 /* App */ = { isa = PBXGroup; children = ( @@ -394,14 +347,6 @@ path = ShipmentDetail; sourceTree = ""; }; - 1B6F7C2F2C2BA601005F0476 /* Extensions */ = { - isa = PBXGroup; - children = ( - 1B6F7C302C2BA621005F0476 /* Data+Data.swift */, - ); - path = Extensions; - sourceTree = ""; - }; 1B8500132C100DE2006E96A0 /* Profile */ = { isa = PBXGroup; children = ( @@ -412,36 +357,6 @@ path = Profile; sourceTree = ""; }; - 1B85E8E02BFC4D9F003040CC /* Models */ = { - isa = PBXGroup; - children = ( - 1B85E8E12BFC4DAE003040CC /* LoginModel.swift */, - 1B9274CF2C115AF1008F4FA3 /* AddressesModel.swift */, - 1B2DDEF72C1E93B6003EC97C /* PackagesModel.swift */, - ); - path = Models; - sourceTree = ""; - }; - 1B85E8E42BFC4E00003040CC /* Data */ = { - isa = PBXGroup; - children = ( - 1B5EBFFD2C081DDA003BC2D9 /* AuthData.swift */, - 1B85E8E82BFC4E4E003040CC /* ConcreteRepositories */, - 1B58EFAF2BE6E9D00066F447 /* Networking */, - ); - path = Data; - sourceTree = ""; - }; - 1B85E8E82BFC4E4E003040CC /* ConcreteRepositories */ = { - isa = PBXGroup; - children = ( - 1B85E8E92BFC4E85003040CC /* AuthRepository.swift */, - 1B99600E2C12992F00976BBC /* AddressRespository.swift */, - 1B2DDEFD2C1E95D3003EC97C /* PackagesRepository.swift */, - ); - path = ConcreteRepositories; - sourceTree = ""; - }; 1B85E8EB2BFC4EAB003040CC /* Presentation */ = { isa = PBXGroup; children = ( @@ -460,17 +375,6 @@ path = Presentation; sourceTree = ""; }; - 1B9274CE2C1158E6008F4FA3 /* Endpoints */ = { - isa = PBXGroup; - children = ( - 1B58EFB82BE729D20066F447 /* Endpoint.swift */, - 1B0557F52BE9074100367124 /* AuthEndpoints.swift */, - 1B9274CC2C1158E0008F4FA3 /* AddressEndpoints.swift */, - 1B2DDEFF2C1E96B8003EC97C /* PackageEndpoints.swift */, - ); - path = Endpoints; - sourceTree = ""; - }; 1B9D15A02C02D904001F47E8 /* Frameworks */ = { isa = PBXGroup; children = ( @@ -549,17 +453,6 @@ path = Extensions; sourceTree = ""; }; - 1BFD1EBE2C2A836F002E4232 /* MockFiles */ = { - isa = PBXGroup; - children = ( - 1BFD1EBF2C2A838D002E4232 /* Login.json */, - 1BFD1EC12C2A83D5002E4232 /* Address.json */, - 1BFD1EC32C2A841C002E4232 /* PackagesForWithdrawl.json */, - 1BFD1EC52C2A843A002E4232 /* WithdrawnPackages.json */, - ); - path = MockFiles; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -580,7 +473,10 @@ packageProductDependencies = ( 1B6E61762C3642E600562112 /* JustACourierAppDomain */, 1B98EDCB2C37902800FD5F04 /* JustACourierAppDomain */, - 1BAED3D62C379BBA0001E6C3 /* JustACourierAppDomain */, + 1B96E9AE2C3E1A3000ECC3F6 /* JustACourierAppDomain */, + 1B96E9B12C3E1A4500ECC3F6 /* JustACourierAppData */, + 1B6D70962C3E23F1003E2781 /* JustACourierAppDomain */, + 1B64291B2C3E27310001AD58 /* JustACourierAppData */, ); productName = "mobile-courier-app"; productReference = 1B58EF732BE6BBE90066F447 /* mobile-courier-app.app */; @@ -656,7 +552,8 @@ ); mainGroup = 1B58EF6A2BE6BBE90066F447; packageReferences = ( - 1BAED3D52C379BBA0001E6C3 /* XCRemoteSwiftPackageReference "mobile-courier-app-domain" */, + 1B6D70952C3E23F1003E2781 /* XCRemoteSwiftPackageReference "mobile-courier-app-domain" */, + 1B64291A2C3E27310001AD58 /* XCRemoteSwiftPackageReference "mobile-courier-app-data" */, ); productRefGroup = 1B58EF742BE6BBE90066F447 /* Products */; projectDirPath = ""; @@ -676,12 +573,8 @@ files = ( 1B58EFAB2BE6C1F30066F447 /* LaunchScreen.storyboard in Resources */, 1BAB0EE62BFEE2D9004DF155 /* Localizable.xcstrings in Resources */, - 1BFD1EC22C2A83D5002E4232 /* Address.json in Resources */, - 1BFD1EC02C2A838D002E4232 /* Login.json in Resources */, 1B58EF7F2BE6BBEA0066F447 /* Preview Assets.xcassets in Resources */, - 1BFD1EC62C2A843A002E4232 /* WithdrawnPackages.json in Resources */, 1B58EF7B2BE6BBEA0066F447 /* Assets.xcassets in Resources */, - 1BFD1EC42C2A841C002E4232 /* PackagesForWithdrawl.json in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -728,59 +621,44 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 1B99600F2C12992F00976BBC /* AddressRespository.swift in Sources */, 1B4047242C27DF9600101DF4 /* SettingsView.swift in Sources */, - 1B58EFB92BE729D20066F447 /* Endpoint.swift in Sources */, 1B2DDEF42C1E7DD4003EC97C /* PackagePlaceholderView.swift in Sources */, 1B07BC8D2BFD677900D8B149 /* RippleSpinnerView.swift in Sources */, 1B4047282C27E04600101DF4 /* AppDIContainerMock.swift in Sources */, - 1B9274D02C115AF1008F4FA3 /* AddressesModel.swift in Sources */, 1BE58CA82C0572B400C7DF63 /* StorageMock.swift in Sources */, 1BFD1EAF2C2A688B002E4232 /* SettingsViewModelMock.swift in Sources */, 1B8B0A442C1BDDE600D1A7AC /* HeaderView.swift in Sources */, - 1B85E8E22BFC4DAE003040CC /* LoginModel.swift in Sources */, 1B6590E02C22853400D46A27 /* PackagesForWithdrawalView.swift in Sources */, - 1B9274CB2C1156C6008F4FA3 /* AppData.swift in Sources */, 1BE58CAA2C05731B00C7DF63 /* LoginViewModelMock.swift in Sources */, 1B40471D2C27C3CB00101DF4 /* GroupedPackageStyleModifier.swift in Sources */, 1BE63F712BE980D60016A26E /* Storage.swift in Sources */, 1B85000E2C10033D006E96A0 /* ToastView.swift in Sources */, - 1B2DDEF82C1E93B6003EC97C /* PackagesModel.swift in Sources */, 1B8500102C1004D0006E96A0 /* ToastModifier.swift in Sources */, 1B2DDEF62C1E9202003EC97C /* WithdrawnPackagesViewModel.swift in Sources */, - 1B2DDF002C1E96B8003EC97C /* PackageEndpoints.swift in Sources */, 1B6590E42C228DD700D46A27 /* PackagesForWithdrawalViewModelMock.swift in Sources */, 1B4047192C2782B300101DF4 /* HomeViewModel.swift in Sources */, 1B58EFA52BE6BFBB0066F447 /* LoginViewModel.swift in Sources */, 1B58EFAE2BE6C2BE0066F447 /* CourierTextFieldStyle.swift in Sources */, 1B58EFA32BE6BF9A0066F447 /* LoginView.swift in Sources */, - 1B0557F62BE9074100367124 /* AuthEndpoints.swift in Sources */, 1BEE841F2C17D6FF00B8A367 /* RowView.swift in Sources */, 1BC0717E2C140F86006EC08E /* ShipmentRowView.swift in Sources */, 1B58EF792BE6BBE90066F447 /* CoordinatorRootView.swift in Sources */, 1B5E84A12C267FE200EDFDE2 /* AppDIContainer.swift in Sources */, - 1BE63F6D2BE9193E0016A26E /* APIRequestClient.swift in Sources */, 1B2DDF042C1E9B12003EC97C /* PackagesRepositoryMock.swift in Sources */, 1B2DDEF22C1E7C95003EC97C /* WithdrawnPackagesView.swift in Sources */, 1B6D75172C23BE5E0067BB56 /* GroupedPackageReadyView.swift in Sources */, 1B6590E22C22856F00D46A27 /* PackagesForWithdrawalViewModel.swift in Sources */, 1B58EFA92BE6C0070066F447 /* BorderedViewModifier.swift in Sources */, 1BC0717C2C140CA9006EC08E /* AddressesRepositoryMock.swift in Sources */, - 1B6F7C312C2BA621005F0476 /* Data+Data.swift in Sources */, - 1B821F192C1AA50600ED1795 /* CustomSessionDelegate.swift in Sources */, 1B40471B2C27854200101DF4 /* AddressEntityMock.swift in Sources */, 1B8500152C100DF1006E96A0 /* ProfileView.swift in Sources */, 1B6F7C332C2BA9D6005F0476 /* RippleSpinnerModifier.swift in Sources */, 1B6D751C2C23DF910067BB56 /* ShipmentDetailView.swift in Sources */, - 1B85E8EA2BFC4E85003040CC /* AuthRepository.swift in Sources */, - 1B9274CD2C1158E0008F4FA3 /* AddressEndpoints.swift in Sources */, 1B5E849F2C267F9600EDFDE2 /* DIContainerProtocol.swift in Sources */, 1BA99DD32C2A6712003D38F8 /* SettingsViewModel.swift in Sources */, 1B58EF772BE6BBE90066F447 /* MobileCourierApp.swift in Sources */, 1B2DDF022C1E9AC8003EC97C /* WithdrawnPackagesViewModelMock.swift in Sources */, 1B40472A2C27E99D00101DF4 /* AppDataMock.swift in Sources */, - 1B2DDEFE2C1E95D3003EC97C /* PackagesRepository.swift in Sources */, - 1B5EBFFE2C081DDA003BC2D9 /* AuthData.swift in Sources */, 1BC0717A2C140C6A006EC08E /* HomeViewModelMock.swift in Sources */, 1B6D75192C23BFB30067BB56 /* RoundedIndicatorViewModifier.swift in Sources */, 1BE58CA62C05727500C7DF63 /* AuthRepositoryMock.swift in Sources */, @@ -1162,7 +1040,15 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ - 1BAED3D52C379BBA0001E6C3 /* XCRemoteSwiftPackageReference "mobile-courier-app-domain" */ = { + 1B64291A2C3E27310001AD58 /* XCRemoteSwiftPackageReference "mobile-courier-app-data" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/vespinola/mobile-courier-app-data"; + requirement = { + branch = main; + kind = branch; + }; + }; + 1B6D70952C3E23F1003E2781 /* XCRemoteSwiftPackageReference "mobile-courier-app-domain" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/vespinola/mobile-courier-app-domain.git"; requirement = { @@ -1173,17 +1059,30 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ + 1B64291B2C3E27310001AD58 /* JustACourierAppData */ = { + isa = XCSwiftPackageProductDependency; + package = 1B64291A2C3E27310001AD58 /* XCRemoteSwiftPackageReference "mobile-courier-app-data" */; + productName = JustACourierAppData; + }; + 1B6D70962C3E23F1003E2781 /* JustACourierAppDomain */ = { + isa = XCSwiftPackageProductDependency; + package = 1B6D70952C3E23F1003E2781 /* XCRemoteSwiftPackageReference "mobile-courier-app-domain" */; + productName = JustACourierAppDomain; + }; 1B6E61762C3642E600562112 /* JustACourierAppDomain */ = { isa = XCSwiftPackageProductDependency; productName = JustACourierAppDomain; }; - 1B98EDCB2C37902800FD5F04 /* JustACourierAppDomain */ = { + 1B96E9AE2C3E1A3000ECC3F6 /* JustACourierAppDomain */ = { isa = XCSwiftPackageProductDependency; productName = JustACourierAppDomain; }; - 1BAED3D62C379BBA0001E6C3 /* JustACourierAppDomain */ = { + 1B96E9B12C3E1A4500ECC3F6 /* JustACourierAppData */ = { + isa = XCSwiftPackageProductDependency; + productName = JustACourierAppData; + }; + 1B98EDCB2C37902800FD5F04 /* JustACourierAppDomain */ = { isa = XCSwiftPackageProductDependency; - package = 1BAED3D52C379BBA0001E6C3 /* XCRemoteSwiftPackageReference "mobile-courier-app-domain" */; productName = JustACourierAppDomain; }; /* End XCSwiftPackageProductDependency section */ diff --git a/mobile-courier-app.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/mobile-courier-app.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 0ca052c..87a84b2 100644 --- a/mobile-courier-app.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/mobile-courier-app.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,13 +1,22 @@ { - "originHash" : "680a722577665b962cd5b5c030dd6a019bebf21ddb41ab0d62988d4308a66ae6", + "originHash" : "9ed4fa45ac266d93bff72a791dc7731864c23b807ee4df7dd56eb5962a0cac96", "pins" : [ + { + "identity" : "mobile-courier-app-data", + "kind" : "remoteSourceControl", + "location" : "https://github.com/vespinola/mobile-courier-app-data", + "state" : { + "branch" : "main", + "revision" : "e4fde4d0c0e35eb3be7090a8106e17fc03a61534" + } + }, { "identity" : "mobile-courier-app-domain", "kind" : "remoteSourceControl", "location" : "https://github.com/vespinola/mobile-courier-app-domain.git", "state" : { "branch" : "main", - "revision" : "6a14080b3ba5e183de76acfb8cbf86e9ba8d3857" + "revision" : "e26ffb1f86787ad43cb551278a0e7f99472aa9ed" } } ], diff --git a/mobile-courier-app/App/AppDIContainer.swift b/mobile-courier-app/App/AppDIContainer.swift index eef27e7..b14d543 100644 --- a/mobile-courier-app/App/AppDIContainer.swift +++ b/mobile-courier-app/App/AppDIContainer.swift @@ -7,6 +7,7 @@ import Foundation import JustACourierAppDomain +import JustACourierAppData final class AppDIContainer: DIContainerProtocol { private var services: [String: Any] = [:] diff --git a/mobile-courier-app/App/MobileCourierApp.swift b/mobile-courier-app/App/MobileCourierApp.swift index ed19ce4..c6bc9cc 100644 --- a/mobile-courier-app/App/MobileCourierApp.swift +++ b/mobile-courier-app/App/MobileCourierApp.swift @@ -6,6 +6,7 @@ // import SwiftUI +import JustACourierAppDomain @main struct MobileCourierApp: App { diff --git a/mobile-courier-app/Data/AuthData.swift b/mobile-courier-app/Data/AuthData.swift deleted file mode 100644 index e06143d..0000000 --- a/mobile-courier-app/Data/AuthData.swift +++ /dev/null @@ -1,16 +0,0 @@ -// -// AuthData.swift -// mobile-courier-app -// -// Created by Vladimir Espinola on 2024-05-29. -// - -import Foundation -import JustACourierAppDomain - -final class AuthData { - static var shared: AuthData = .init() - var loginData: LoginEntity? - - private init() {} -} diff --git a/mobile-courier-app/Data/ConcreteRepositories/AddressRespository.swift b/mobile-courier-app/Data/ConcreteRepositories/AddressRespository.swift deleted file mode 100644 index fc3f745..0000000 --- a/mobile-courier-app/Data/ConcreteRepositories/AddressRespository.swift +++ /dev/null @@ -1,32 +0,0 @@ -// -// AddressRespository.swift -// mobile-courier-app -// -// Created by Vladimir Espinola on 2024-06-06. -// - -import Foundation -import JustACourierAppDomain - -struct AddressRespository: AddressRepositoryProtocol { - private var apiRequestClient: APIRequestClientProtocol - - init(apiRequestClient: APIRequestClientProtocol = APIRequestClient()) { - self.apiRequestClient = apiRequestClient - } - - func getAddress() async throws -> AddressesEntity { - let model: AddressesModel = try await apiRequestClient.performRequest( - endpoint: AddressEndpoints.addresses, - decoder: JSONDecoder() - ) - - let firstName = model.airShipments.client.clientFirstName - let lastName = model.airShipments.client.clientLastName - let fullName = firstName + " " + lastName - - AppData.shared.setUsername(fullName) - - return model.asEntity() - } -} diff --git a/mobile-courier-app/Data/ConcreteRepositories/AuthRepository.swift b/mobile-courier-app/Data/ConcreteRepositories/AuthRepository.swift deleted file mode 100644 index cc6a849..0000000 --- a/mobile-courier-app/Data/ConcreteRepositories/AuthRepository.swift +++ /dev/null @@ -1,30 +0,0 @@ -// -// AuthRepository.swift -// mobile-courier-app -// -// Created by Vladimir Espinola on 2024-05-20. -// - -import Foundation -import JustACourierAppDomain - -struct AuthRepository: AuthRepositoryProtocol { - private var apiRequestClient: APIRequestClientProtocol - - init(apiRequestClient: APIRequestClientProtocol = APIRequestClient()) { - self.apiRequestClient = apiRequestClient - } - - func performLogin(email: String, password: String) async throws { - let model: LoginModel = try await apiRequestClient.performRequest( - endpoint: AuthEndpoints.login(email: email, password: password), - decoder: JSONDecoder() - ) - - AppData.shared.updateToken(model.accessToken) - } - - func performLogout() { - AppData.shared.updateToken(nil) - } -} diff --git a/mobile-courier-app/Data/ConcreteRepositories/PackagesRepository.swift b/mobile-courier-app/Data/ConcreteRepositories/PackagesRepository.swift deleted file mode 100644 index 2f46cb4..0000000 --- a/mobile-courier-app/Data/ConcreteRepositories/PackagesRepository.swift +++ /dev/null @@ -1,35 +0,0 @@ -// -// PackagesRepository.swift -// mobile-courier-app -// -// Created by Vladimir Espinola on 2024-06-15. -// - -import Foundation -import JustACourierAppDomain - -struct PackagesRepository: PackagesRepositoryProtocol { - private var apiRequestClient: APIRequestClientProtocol - - init(apiRequestClient: APIRequestClientProtocol = APIRequestClient()) { - self.apiRequestClient = apiRequestClient - } - - func getWithdrawnPackages() async throws -> [GroupedPackageEntity] { - let model: PackagesModel = try await apiRequestClient.performRequest( - endpoint: PackageEndpoints.withdrawn, - decoder: JSONDecoder() - ) - - return model.asEntity() - } - - func getPackagesForWithdrawl() async throws -> [GroupedPackageEntity] { - let model: PackagesModel = try await apiRequestClient.performRequest( - endpoint: PackageEndpoints.forWithdrawl, - decoder: JSONDecoder() - ) - - return model.asEntity() - } -} diff --git a/mobile-courier-app/Data/Networking/APIRequestClient.swift b/mobile-courier-app/Data/Networking/APIRequestClient.swift deleted file mode 100644 index f969a2f..0000000 --- a/mobile-courier-app/Data/Networking/APIRequestClient.swift +++ /dev/null @@ -1,79 +0,0 @@ -// -// APIRequestClient.swift -// mobile-courier-app -// -// Created by Vladimir Espinola on 2024-05-06. -// - -import Foundation -import os - -enum APIErrorMessage: Error { - case invalidRequest - case invalidResponse - case timeout - case requestFailed(statusCode: Int) - case decodeFailed -} - -protocol APIRequestClientProtocol { - func performRequest(endpoint: Endpoint, decoder: JSONDecoder) async throws -> T -} - -final class APIRequestClient: NSObject, APIRequestClientProtocol { - - private lazy var logger: Logger = .init() - - private lazy var delegate: URLSessionDelegate? = CustomSessionDelegate() - - func performRequest(endpoint: Endpoint, decoder: JSONDecoder = JSONDecoder()) async throws -> T { - #if DEBUG - if let mockfile = endpoint.mockFile, let fileUrl = Bundle.main.url(forResource: mockfile, withExtension: "json") { - decoder.keyDecodingStrategy = .convertFromSnakeCase - let data = try Data(contentsOf: fileUrl, options: .uncached) - let decodedData = try decoder.decode(T.self, from: data) - try? await Task.sleep(nanoseconds: 2 * 1_000_000_000) - - logger.debug("\(mockfile): \(data.prettyPrintedJSONString ?? "")") - - return decodedData - } - #endif - - guard let urlRequest = try? endpoint.asRequest() else { - throw APIErrorMessage.invalidRequest - } - - do { - let configuration = URLSessionConfiguration.default - configuration.timeoutIntervalForRequest = 10 - configuration.timeoutIntervalForResource = 10 - configuration.requestCachePolicy = .reloadIgnoringLocalCacheData - configuration.urlCache = nil - - let (data, response) = try await URLSession(configuration: configuration, delegate: delegate, delegateQueue: nil) - .data(for: urlRequest) - - guard let httpResponse = response as? HTTPURLResponse else { - throw APIErrorMessage.invalidResponse - } - - guard (200...299).contains(httpResponse.statusCode) else { - throw APIErrorMessage.requestFailed(statusCode: httpResponse.statusCode) - } - - decoder.keyDecodingStrategy = .convertFromSnakeCase - let decodedData = try decoder.decode(T.self, from: data) - - logger.debug("\(response.url?.absoluteString ?? ""): \(data.prettyPrintedJSONString ?? "")") - - return decodedData - } catch { - if (error as NSError).code == NSURLErrorTimedOut { - throw APIErrorMessage.timeout - } - - throw error - } - } -} diff --git a/mobile-courier-app/Data/Networking/AppData.swift b/mobile-courier-app/Data/Networking/AppData.swift deleted file mode 100644 index 07819bb..0000000 --- a/mobile-courier-app/Data/Networking/AppData.swift +++ /dev/null @@ -1,29 +0,0 @@ -// -// AppData.swift -// mobile-courier-app -// -// Created by Vladimir Espinola on 2024-06-05. -// - -import Foundation - -final class AppData: ObservableObject { - var token: String? - @Published var username: String? - - static var shared: AppData = .init() - - func setUsername(_ newUsername: String?) { - DispatchQueue.main.async { [weak self] in - self?.username = newUsername - } - } - - func updateToken(_ newToken: String?) { - token = newToken - } - - func getToken() -> String? { - token - } -} diff --git a/mobile-courier-app/Data/Networking/CustomSessionDelegate.swift b/mobile-courier-app/Data/Networking/CustomSessionDelegate.swift deleted file mode 100644 index 4b8ea18..0000000 --- a/mobile-courier-app/Data/Networking/CustomSessionDelegate.swift +++ /dev/null @@ -1,20 +0,0 @@ -// -// CustomSessionDelegate.swift -// mobile-courier-app -// -// Created by Vladimir Espinola on 2024-06-12. -// - -import Foundation - -final class CustomSessionDelegate: NSObject, URLSessionDataDelegate { - func urlSession(_ session: URLSession, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) { - guard challenge.protectionSpace.authenticationMethod == NSURLAuthenticationMethodServerTrust, - let serverTrust = challenge.protectionSpace.serverTrust else { - completionHandler(.performDefaultHandling, nil) - return - } - let credential = URLCredential(trust: serverTrust) - completionHandler(.useCredential, credential) - } -} diff --git a/mobile-courier-app/Data/Networking/Endpoints/AddressEndpoints.swift b/mobile-courier-app/Data/Networking/Endpoints/AddressEndpoints.swift deleted file mode 100644 index b9f25e4..0000000 --- a/mobile-courier-app/Data/Networking/Endpoints/AddressEndpoints.swift +++ /dev/null @@ -1,34 +0,0 @@ -// -// AddressEndpoints.swift -// mobile-courier-app -// -// Created by Vladimir Espinola on 2024-06-05. -// - -import Foundation - -enum AddressEndpoints { - case addresses -} - -extension AddressEndpoints: Endpoint { - var mockFile: String? { - "Address" - } - - var requestType: RequestType { - .get - } - - var path: String { - "/direccion" - } - - var body: [AnyHashable: Any]? { - nil - } - - var queryParams: [String: String]? { - nil - } -} diff --git a/mobile-courier-app/Data/Networking/Endpoints/AuthEndpoints.swift b/mobile-courier-app/Data/Networking/Endpoints/AuthEndpoints.swift deleted file mode 100644 index e4161ad..0000000 --- a/mobile-courier-app/Data/Networking/Endpoints/AuthEndpoints.swift +++ /dev/null @@ -1,58 +0,0 @@ -// -// AuthEndpoints.swift -// mobile-courier-app -// -// Created by Vladimir Espinola on 2024-05-06. -// - -import Foundation - -enum AuthEndpoints { - case login(email: String, password: String) - case logout -} - -extension AuthEndpoints: Endpoint { - - var mockFile: String? { - "Login" - } - - var requestType: RequestType { - switch self { - case .login: - return .post - default: - return .get - } - } - - var path: String { - switch self { - case .login: - return "/ingresar" - default: - return "" - } - } - - var body: [AnyHashable: Any]? { - switch self { - case .login(email: let email, password: let pass): - return [ - "username": email, - "password": pass - ] - default: - return nil - } - } - - var queryParams: [String: String]? { - nil - } - - var authToken: String? { - nil - } -} diff --git a/mobile-courier-app/Data/Networking/Endpoints/Endpoint.swift b/mobile-courier-app/Data/Networking/Endpoints/Endpoint.swift deleted file mode 100644 index 4139f95..0000000 --- a/mobile-courier-app/Data/Networking/Endpoints/Endpoint.swift +++ /dev/null @@ -1,75 +0,0 @@ -// -// Endpoint.swift -// mobile-courier-app -// -// Created by Vladimir Espinola on 2024-05-04. -// - -import Foundation - -enum RequestType: String { - case get = "GET" - case post = "POST" -} - -protocol Endpoint { - var scheme: String { get } - var requestType: RequestType { get } - var host: String { get } - var path: String { get } - var headers: [String: String] { get } - var body: [AnyHashable: Any]? { get } - var queryParams: [String: String]? { get } - var authToken: String? { get } - var port: Int { get } - - var mockFile: String? { get } -} - -extension Endpoint { - var scheme: String { "https" } - var host: String { "justacourier.com.py" } - var port: Int { 8449 } - var headers: [String: String] { - var internalHeaders = [ - "Content-Type": "application/json" - ] - - if let authToken = authToken { - internalHeaders["Authorization"] = authToken - } - - return internalHeaders - } - - var authToken: String? { - guard let token = AppData.shared.getToken() else { return nil } - return "Bearer \(token)" - } -} - -extension Endpoint { - func asRequest(serializer: JSONSerialization.Type = JSONSerialization.self) throws -> URLRequest? { - var urlComponent = URLComponents() - urlComponent.scheme = scheme - urlComponent.path = path - urlComponent.host = host - urlComponent.port = port - - guard let url = urlComponent.url else { return nil } - - var urlRequest = URLRequest(url: url) - urlRequest.allHTTPHeaderFields = headers - urlRequest.httpMethod = requestType.rawValue - - if let body = body { - urlRequest.httpBody = try serializer.data(withJSONObject: body) - } - - if let authToken = authToken { - urlRequest.allHTTPHeaderFields?["authorization"] = authToken - } - - return urlRequest - } -} diff --git a/mobile-courier-app/Data/Networking/Endpoints/PackageEndpoints.swift b/mobile-courier-app/Data/Networking/Endpoints/PackageEndpoints.swift deleted file mode 100644 index 0cf91e3..0000000 --- a/mobile-courier-app/Data/Networking/Endpoints/PackageEndpoints.swift +++ /dev/null @@ -1,45 +0,0 @@ -// -// PackageEndpoints.swift -// mobile-courier-app -// -// Created by Vladimir Espinola on 2024-06-15. -// - -import Foundation - -enum PackageEndpoints { - case withdrawn - case forWithdrawl -} - -extension PackageEndpoints: Endpoint { - var mockFile: String? { - switch self { - case .withdrawn: - "WithdrawnPackages" - case .forWithdrawl: - "PackagesForWithdrawl" - } - } - - var requestType: RequestType { - .get - } - - var path: String { - switch self { - case .withdrawn: - "/paquetesRetirados" - case .forWithdrawl: - "/paquetesPendientes" - } - } - - var body: [AnyHashable: Any]? { - nil - } - - var queryParams: [String: String]? { - nil - } -} diff --git a/mobile-courier-app/Data/Networking/Extensions/Data+Data.swift b/mobile-courier-app/Data/Networking/Extensions/Data+Data.swift deleted file mode 100644 index 635526c..0000000 --- a/mobile-courier-app/Data/Networking/Extensions/Data+Data.swift +++ /dev/null @@ -1,20 +0,0 @@ -// -// Data+Data.swift -// mobile-courier-app -// -// Created by Vladimir Espinola on 2024-06-25. -// - -import Foundation - -extension Data { - var prettyPrintedJSONString: String? { - do { - let jsonObject = try JSONSerialization.jsonObject(with: self, options: []) - let prettyData = try JSONSerialization.data(withJSONObject: jsonObject, options: [.prettyPrinted]) - return String(data: prettyData, encoding: .utf8) - } catch { - return nil - } - } -} diff --git a/mobile-courier-app/Data/Networking/MockFiles/Address.json b/mobile-courier-app/Data/Networking/MockFiles/Address.json deleted file mode 100644 index 7232a78..0000000 --- a/mobile-courier-app/Data/Networking/MockFiles/Address.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "enviosAereos": { - "ciudad": "New York, NY 10001", - "cliente": { - "class": "com.example.Clientes", - "id": 12345, - "apellidoautorizado": "SMITH", - "autorizaemail": 1, - "ciautorizado": "1234567", - "ciudad": 1, - "clienteapellido": "DOE", - "clientecelular": "1234567890", - "clienteci": "12345678", - "clientedireccion": "123 Main St", - "clientenombre": "JOHN", - "clienteobservacion": "", - "clientetelefono": "0987654321", - "dianac": 1, - "estado": 1, - "estante": "A1", - "mesnac": 1, - "nombreautorizado": "JANE", - "pagoAnualidad": null, - "password": "passwordhash", - "ruc": "9876543", - "tarifa": 25.0, - "username": "john.doe@example.com" - }, - "direccion": "789 Broadway", - "empresa": "EXAMPLE USA", - "pais": "United States", - "telefono": "(555) 123-4567", - "viaMaritima": false - }, - "viaMaritima": { - "ciudad": "Los Angeles, CA 90001", - "cliente": { - "class": "com.example.Clientes", - "id": 12345, - "apellidoautorizado": "SMITH", - "autorizaemail": 1, - "ciautorizado": "1234567", - "ciudad": 1, - "clienteapellido": "DOE", - "clientecelular": "1234567890", - "clienteci": "12345678", - "clientedireccion": "123 Main St", - "clientenombre": "JOHN", - "clienteobservacion": "", - "clientetelefono": "0987654321", - "dianac": 1, - "estado": 1, - "estante": "A1", - "mesnac": 1, - "nombreautorizado": "JANE", - "pagoAnualidad": null, - "password": "passwordhash", - "ruc": "9876543", - "tarifa": 25.0, - "username": "john.doe@example.com" - }, - "direccion": "123 Ocean Blvd", - "empresa": "EXAMPLE USA", - "pais": "United States", - "telefono": "(555) 987-6543", - "viaMaritima": true - } -} diff --git a/mobile-courier-app/Data/Networking/MockFiles/Login.json b/mobile-courier-app/Data/Networking/MockFiles/Login.json deleted file mode 100644 index 7f261b7..0000000 --- a/mobile-courier-app/Data/Networking/MockFiles/Login.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "access_token": "eyJhbGciOiJIUzI1NiJ9.eyJwcmluY2lwYWwiOiJINHNJQUFBQUFBQUFBSlZTejJzVFFSUitpU2tWaXRnV0ZFUXFIdXBOTmpZaE5DR1gybEtsc0NSaXpLV0NaYkw3c2s0N083UE96S2FiaThTTFBYZ1ExSUxneFlNbjZYXC9peVQ5QUVPODk5K3FidE0ybVhvckx3aTV2dnYxK3ZUMDZoaG1qb1JwcHhvWHhFcEZHWEhvbTBWeEdCb05VY3p2MFVvTTZSRHRHUEI0RHV6U0IwNnRRaElJUFJSNWFXUFIzMllDVkJaTlJ1ZDNieGNBMk13MFZwYU16eHI1bU1lNHJ2ZWROdUFPbDhZSkFUbDFZSzhMc05peXdJRkNwdEMwbE43T0Vhd3kzWVQ2ZitTclljNk1iQVoyZ3RKd0pNdzJkUmAsNkFrTWY1bGhxWHlwUzVXZ3NYRDgxbTFvdXloMjBUUit1SnN3WWN2ZFBrbzUxMXQyNXN5a3B3U3Q0RGFVc0tkQkYzZDF6VU1cL3hlQnRLQ0VyTmxUVExYUm1ya1BlNUV5ZiswZEtIbisrXC9qTHBGQU9ya1wvdVhmNVBOYjZ6RDY4ZUxrenJqb1FtRGg1cFQxSE5iTUVuS3prRE1cLzAraVVmMzErOHZIdytPRDVGVkoyaUVmXC92NFwvbGgyZk5EVGRVbkRETnJKcmFFZEh1bDl3N2thOWZUbjYraGFIWDRYRWlrUDRvYVRHY1NPVEVGTGVrbFRqdjI4SzFwMjFcL2M2ZlYzbkhQVG1iaGJyOGZybFRweGxWV2J6UjZyRjZyWTZOU3FmYnJxMkd0aGc4czNCNElGdktZYXc5TndxVVNiQzJLS1JtWmlTZDl1VVY3VzJRalFyMzQ1K3Uza3pjSGRkTGZncGtCRXluU3h1WnpYQ3VOZTZqZkhoMHV6WDM2XC9XNmNIOERcL1wvaGNLbEMyeFN3TUFBQT09Iiwic3ViIjoidmxhZGltaXIuZXNwaW5vbGFAZ21haWwuY29tIiwiZXhwIjoxNzI1MzM4ODE5LCJpYXQiOjE3MTkyOTA4MTksInJvbGVzIjpbIlJPTEVfTk9fUk9MRVMiXX0.Us_2_7asxxzrPv6D6LqKwVctdgD397XpyB4rfHC0pEK", - "username": "john.doe@gmail.com" -} diff --git a/mobile-courier-app/Data/Networking/MockFiles/PackagesForWithdrawl.json b/mobile-courier-app/Data/Networking/MockFiles/PackagesForWithdrawl.json deleted file mode 100644 index ab0b79b..0000000 --- a/mobile-courier-app/Data/Networking/MockFiles/PackagesForWithdrawl.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "paquetes": [ - { - "paquetedescripcion": "TOY", - "paquetetracking": "CNUSUP00000773583", - "estado": "B", - "cotizacion": 7585.0, - "embarqueestado": "ASUNCION", - "embarquefecha": "2024-06-11T04:00:00Z", - "paquetepeso": 0.2, - "embarquemedio": "Aereo", - "embarquecodigo": 2179, - "id": 1606577, - "tarifapreciocli": 22.5, - "paqueteprecio": 22.5 - }, - { - "paquetedescripcion": "ACC", - "paquetetracking": "420331869361289677032421065418", - "estado": "A", - "cotizacion": 7585.0, - "embarqueestado": "TRANSITO", - "embarquefecha": "2024-06-18T04:00:00Z", - "paquetepeso": 0.12, - "embarquemedio": "Aereo", - "embarquecodigo": 2182, - "id": 1610658, - "tarifapreciocli": 22.5, - "paqueteprecio": 22.5 - } - ] -} diff --git a/mobile-courier-app/Data/Networking/MockFiles/WithdrawnPackages.json b/mobile-courier-app/Data/Networking/MockFiles/WithdrawnPackages.json deleted file mode 100644 index e5a8742..0000000 --- a/mobile-courier-app/Data/Networking/MockFiles/WithdrawnPackages.json +++ /dev/null @@ -1,1624 +0,0 @@ -{ - "paquetes": [ - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2024-05-17T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "UBC HUB", - "paquetetracking": "754258-USPS", - "cotizacion": 7520.0, - "embarquefecha": "2024-05-10T04:00:00Z", - "paquetepeso": 0.26, - "embarquecodigo": 2165, - "id": 1589435, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2024-04-01T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "TOY", - "paquetetracking": "TBA312182035683", - "cotizacion": 7300.0, - "embarquefecha": "2024-03-18T03:00:00Z", - "paquetepeso": 0.56, - "embarquecodigo": 2135, - "id": 1561248, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2024-02-14T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "ACC", - "paquetetracking": "420331869374869903508665268491", - "cotizacion": 7330.0, - "embarquefecha": "2024-02-01T03:00:00Z", - "paquetepeso": 0.3, - "embarquecodigo": 2110, - "id": 1535193, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2024-02-14T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "ACC", - "paquetetracking": "LD048958895HK", - "cotizacion": 7380.0, - "embarquefecha": "2024-01-23T03:00:00Z", - "paquetepeso": 0.18, - "embarquecodigo": 2105, - "id": 1530242, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2023-12-29T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "TOY", - "paquetetracking": "TBA311964", - "cotizacion": 7420.0, - "embarquefecha": "2023-12-22T03:00:00Z", - "paquetepeso": 1.06, - "embarquecodigo": 2089, - "id": 1514270, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2023-12-29T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "ACC", - "paquetetracking": "TBA758192", - "cotizacion": 7410.0, - "embarquefecha": "2023-12-19T03:00:00Z", - "paquetepeso": 0.1, - "embarquecodigo": 2086, - "id": 1511892, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2023-10-21T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "ROPA,TOY", - "paquetetracking": "420331869361289677024480412937", - "cotizacion": 7460.0, - "embarquefecha": "2023-10-18T03:00:00Z", - "paquetepeso": 0.78, - "embarquecodigo": 2049, - "id": 1474694, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2023-10-04T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "SNACK SPREAD", - "paquetetracking": "420331869361289677023895657971", - "cotizacion": 7330.0, - "embarquefecha": "2023-09-27T04:00:00Z", - "paquetepeso": 1.17, - "embarquecodigo": 2035, - "id": 1463620, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2023-10-04T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "TRIMMER", - "paquetetracking": "4203318692748927005455000421442657", - "cotizacion": 7310.0, - "embarquefecha": "2023-09-22T04:00:00Z", - "paquetepeso": 0.24, - "embarquecodigo": 2032, - "id": 1461648, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2023-07-20T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "MAC MINI", - "paquetetracking": "1027586661520003318600780920090170", - "cotizacion": 7340.0, - "embarquefecha": "2023-07-14T04:00:00Z", - "paquetepeso": 1.79, - "embarquecodigo": 1980, - "id": 1423084, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2023-07-13T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "LED WATCH REPAIR", - "paquetetracking": "4203318692748903338851000006836818", - "cotizacion": 7360.0, - "embarquefecha": "2023-06-30T04:00:00Z", - "paquetepeso": 0.18, - "embarquecodigo": 1970, - "id": 1416559, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2023-06-10T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "BATTERY", - "paquetetracking": "420331869400136102262794512035", - "cotizacion": 7310.0, - "embarquefecha": "2023-06-06T04:00:00Z", - "paquetepeso": 0.07, - "embarquecodigo": 1950, - "id": 1405095, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2023-06-10T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "TOY", - "paquetetracking": "TBA306986766604", - "cotizacion": 7330.0, - "embarquefecha": "2023-06-04T04:00:00Z", - "paquetepeso": 0.08, - "embarquecodigo": 1948, - "id": 1403099, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2023-06-01T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "TOY", - "paquetetracking": "TBA306811545296", - "cotizacion": 7300.0, - "embarquefecha": "2023-05-23T04:00:00Z", - "paquetepeso": 0.2, - "embarquecodigo": 1940, - "id": 1397901, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2023-05-22T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "SOLAR CHARGER", - "paquetetracking": "4203318692748903338851000002519081", - "cotizacion": 7230.0, - "embarquefecha": "2023-05-05T04:00:00Z", - "paquetepeso": 0.32, - "embarquecodigo": 1926, - "id": 1389577, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2023-03-16T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "WIPE WARMER", - "paquetetracking": "420331869361289677018594873319", - "cotizacion": 7260.0, - "embarquefecha": "2023-03-01T03:00:00Z", - "paquetepeso": 2.0, - "embarquecodigo": 1877, - "id": 1358470, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2023-03-06T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "ROPA", - "paquetetracking": "420331869361289677018583051421", - "cotizacion": 7300.0, - "embarquefecha": "2023-02-28T03:00:00Z", - "paquetepeso": 0.89, - "embarquecodigo": 1876, - "id": 1357735, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2023-01-11T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "BOOK", - "paquetetracking": "NT230104150513738 AMAZON", - "cotizacion": 7330.0, - "embarquefecha": "2023-01-03T03:00:00Z", - "paquetepeso": 0.46, - "embarquecodigo": 1827, - "id": 1331276, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2023-01-11T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "BOOK", - "paquetetracking": "TBA304552798819", - "cotizacion": 7330.0, - "embarquefecha": "2022-12-27T03:00:00Z", - "paquetepeso": 0.97, - "embarquecodigo": 1822, - "id": 1328381, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2022-12-23T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "LAPT", - "paquetetracking": "1Z87F7430392688857 UPS", - "cotizacion": 7230.0, - "embarquefecha": "2022-12-20T03:00:00Z", - "paquetepeso": 2.88, - "embarquecodigo": 1816, - "id": 1324274, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2022-11-28T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "TOY", - "paquetetracking": "1222282463290003318600390871428266", - "cotizacion": 7250.0, - "embarquefecha": "2022-11-21T03:00:00Z", - "paquetepeso": 1.16, - "embarquecodigo": 1793, - "id": 1308655, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2022-11-28T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "MEMORY", - "paquetetracking": "420331869374889677015860709781", - "cotizacion": 7200.0, - "embarquefecha": "2022-11-15T03:00:00Z", - "paquetepeso": 0.02, - "embarquecodigo": 1787, - "id": 1304420, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2022-10-17T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "CARGADOR", - "paquetetracking": "1Z2451R80304749475", - "cotizacion": 7125.0, - "embarquefecha": "2022-10-12T03:00:00Z", - "paquetepeso": 0.92, - "embarquecodigo": 1762, - "id": 1287554, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2022-10-10T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "CD GAME", - "paquetetracking": "TBA303021803148", - "cotizacion": 7010.0, - "embarquefecha": "2022-09-20T04:00:00Z", - "paquetepeso": 0.07, - "embarquecodigo": 1750, - "id": 1277437, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2022-09-19T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "ROPA", - "paquetetracking": "TBA051238730704", - "cotizacion": 6990.0, - "embarquefecha": "2022-09-15T04:00:00Z", - "paquetepeso": 0.82, - "embarquecodigo": 1746, - "id": 1274278, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2022-09-16T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "PART", - "paquetetracking": "420331869248790281670600085413", - "cotizacion": 6960.0, - "embarquefecha": "2022-09-08T04:00:00Z", - "paquetepeso": 0.55, - "embarquecodigo": 1742, - "id": 1271730, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2022-08-30T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "ELECTRONIC", - "paquetetracking": "420331869361210912400710389844", - "cotizacion": 6930.0, - "embarquefecha": "2022-08-26T04:00:00Z", - "paquetepeso": 0.76, - "embarquecodigo": 1735, - "id": 1266377, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2022-08-30T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "TOY", - "paquetetracking": "TBA026798044904", - "cotizacion": 6930.0, - "embarquefecha": "2022-08-26T04:00:00Z", - "paquetepeso": 0.82, - "embarquecodigo": 1735, - "id": 1266169, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2022-08-20T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "ACC", - "paquetetracking": "LB306327154SG", - "cotizacion": 6930.0, - "embarquefecha": "2022-08-17T04:00:00Z", - "paquetepeso": 0.16, - "embarquecodigo": 1729, - "id": 1261656, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2022-08-20T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "BATERIA", - "paquetetracking": "420331869274890198179014443343", - "cotizacion": 6930.0, - "embarquefecha": "2022-08-17T04:00:00Z", - "paquetepeso": 0.35, - "embarquecodigo": 1729, - "id": 1261123, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2022-08-20T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "TOY", - "paquetetracking": "1Z5W0W960315275653", - "cotizacion": 6950.0, - "embarquefecha": "2022-08-16T04:00:00Z", - "paquetepeso": 1.0, - "embarquecodigo": 1728, - "id": 1260122, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2022-08-20T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "ACC", - "paquetetracking": "LW245538308CN", - "cotizacion": 6950.0, - "embarquefecha": "2022-08-01T04:00:00Z", - "paquetepeso": 0.22, - "embarquecodigo": 1720, - "id": 1253591, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2022-08-02T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "SMART CEILING", - "paquetetracking": "TBA174720882104", - "cotizacion": 6920.0, - "embarquefecha": "2022-07-20T04:00:00Z", - "paquetepeso": 0.21, - "embarquecodigo": 1711, - "id": 1247610, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2022-08-02T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "GEL PACK COLD", - "paquetetracking": "1Z82V5421319996651", - "cotizacion": 6920.0, - "embarquefecha": "2022-07-13T04:00:00Z", - "paquetepeso": 0.75, - "embarquecodigo": 1705, - "id": 1243115, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2022-07-16T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "TOY", - "paquetetracking": "TBA159887002504", - "cotizacion": 6900.0, - "embarquefecha": "2022-07-07T04:00:00Z", - "paquetepeso": 0.24, - "embarquecodigo": 1702, - "id": 1241767, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2022-06-08T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "HEADPHONE", - "paquetetracking": "420331869274890278833966853050", - "cotizacion": 6930.0, - "embarquefecha": "2022-06-03T04:00:00Z", - "paquetepeso": 0.07, - "embarquecodigo": 1679, - "id": 1226272, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2022-05-28T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "ACC", - "paquetetracking": "9274890233787680412857", - "cotizacion": 6900.0, - "embarquefecha": "2022-05-03T04:00:00Z", - "paquetepeso": 0.02, - "embarquecodigo": 1658, - "id": 1212231, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2022-05-28T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "CC", - "paquetetracking": "TBA180174872301", - "cotizacion": 6900.0, - "embarquefecha": "2022-04-30T04:00:00Z", - "paquetepeso": 0.36, - "embarquecodigo": 1657, - "id": 1211428, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2022-04-04T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "PARTS", - "paquetetracking": "420331869274890233787689337748", - "cotizacion": 7000.0, - "embarquefecha": "2022-03-26T03:00:00Z", - "paquetepeso": 0.06, - "embarquecodigo": 1640, - "id": 1196644, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2022-04-04T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "CASE", - "paquetetracking": "NT220322165305635", - "cotizacion": 7000.0, - "embarquefecha": "2022-03-22T03:00:00Z", - "paquetepeso": 0.08, - "embarquecodigo": 1637, - "id": 1194409, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2022-03-11T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "4HEAD", - "paquetetracking": "TBA176221847701", - "cotizacion": 7000.0, - "embarquefecha": "2022-03-04T03:00:00Z", - "paquetepeso": 0.03, - "embarquecodigo": 1626, - "id": 1186430, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2022-03-11T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 22.5, - "paquetedescripcion": "ROPA", - "paquetetracking": "TBA176229110301", - "cotizacion": 7000.0, - "embarquefecha": "2022-03-04T03:00:00Z", - "paquetepeso": 0.98, - "embarquecodigo": 1626, - "id": 1186182, - "paqueteprecio": 22.5 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2022-01-10T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "CASE", - "paquetetracking": "9274890240790104616922", - "cotizacion": 6900.0, - "embarquefecha": "2021-11-02T03:00:00Z", - "paquetepeso": 0.02, - "embarquecodigo": 1562, - "id": 1132475, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2021-09-29T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "PURSE", - "paquetetracking": "TBA166001500901", - "cotizacion": 6900.0, - "embarquefecha": "2021-09-25T04:00:00Z", - "paquetepeso": 0.61, - "embarquecodigo": 1528, - "id": 1114319, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2021-09-29T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "BOOK", - "paquetetracking": "9241990988197226564902", - "cotizacion": 6930.0, - "embarquefecha": "2021-08-26T04:00:00Z", - "paquetepeso": 1.5, - "embarquecodigo": 1510, - "id": 1103918, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2021-08-16T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "TRIMMER", - "paquetetracking": "1001905171370003318600282367826738", - "cotizacion": 6910.0, - "embarquefecha": "2021-08-11T04:00:00Z", - "paquetepeso": 0.91, - "embarquecodigo": 1501, - "id": 1096915, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2021-07-20T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "BATERIA", - "paquetetracking": "420331869400111899560674640899", - "cotizacion": 6830.0, - "embarquefecha": "2021-07-16T04:00:00Z", - "paquetepeso": 0.33, - "embarquecodigo": 1485, - "id": 1085670, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2021-07-20T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "ADAPTER", - "paquetetracking": "NT210713165531517", - "cotizacion": 6800.0, - "embarquefecha": "2021-07-15T04:00:00Z", - "paquetepeso": 0.02, - "embarquecodigo": 1484, - "id": 1084425, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2021-07-13T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "ACC", - "paquetetracking": "9200190228643962255267", - "cotizacion": 6780.0, - "embarquefecha": "2021-07-09T04:00:00Z", - "paquetepeso": 0.07, - "embarquecodigo": 1481, - "id": 1082315, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2021-07-08T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "LAPT", - "paquetetracking": "1ZE4W1684297848405", - "cotizacion": 6780.0, - "embarquefecha": "2021-07-02T04:00:00Z", - "paquetepeso": 5.0, - "embarquecodigo": 1478, - "id": 1080080, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2021-05-03T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "MOUSEPAFD,HEADPHONE", - "paquetetracking": "TBA158492649401", - "cotizacion": 6530.0, - "embarquefecha": "2021-04-27T04:00:00Z", - "paquetepeso": 1.5, - "embarquecodigo": 1436, - "id": 1049362, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2021-04-07T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "ACC/ELECTRONIC", - "paquetetracking": "1001905234370003318600785271964686", - "cotizacion": 6430.0, - "embarquefecha": "2021-04-01T04:00:00Z", - "paquetepeso": 0.32, - "embarquecodigo": 1417, - "id": 1037313, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2021-03-09T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "TOY", - "paquetetracking": "9405511899560538670164", - "cotizacion": 6710.0, - "embarquefecha": "2021-03-06T03:00:00Z", - "paquetepeso": 1.16, - "embarquecodigo": 1396, - "id": 1023918, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2021-01-23T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "LAPTOP ACER", - "paquetetracking": "420331869410803699300131620001", - "cotizacion": 6940.0, - "embarquefecha": "2021-01-20T03:00:00Z", - "paquetepeso": 3.5, - "embarquecodigo": 1359, - "id": 1002381, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2021-01-23T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "CLIPPER", - "paquetetracking": "TBA153720441801", - "cotizacion": 6920.0, - "embarquefecha": "2021-01-19T03:00:00Z", - "paquetepeso": 0.79, - "embarquecodigo": 1358, - "id": 1002084, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2021-01-23T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "ACCESSORY ELECTRONIC", - "paquetetracking": "9405536895232481575281", - "cotizacion": 7020.0, - "embarquefecha": "2021-01-04T03:00:00Z", - "paquetepeso": 0.0, - "embarquecodigo": 1346, - "id": 994397, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2020-12-30T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "HOME MINI", - "paquetetracking": "9400108205496946287479", - "cotizacion": 6990.0, - "embarquefecha": "2020-12-23T03:00:00Z", - "paquetepeso": 0.37, - "embarquecodigo": 1340, - "id": 990480, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2020-12-09T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "ACC", - "paquetetracking": "9400108205497592605747", - "cotizacion": 7055.0, - "embarquefecha": "2020-12-02T03:00:00Z", - "paquetepeso": 0.15, - "embarquecodigo": 1326, - "id": 975737, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2020-11-05T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "ACC ELECTRONIC", - "paquetetracking": "4203318692612902410401000105392717", - "cotizacion": 7020.0, - "embarquefecha": "2020-10-30T03:00:00Z", - "paquetepeso": 0.81, - "embarquecodigo": 1312, - "id": 963772, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2020-10-17T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "HEADPHONE", - "paquetetracking": "TBAMIA517764514", - "cotizacion": 6960.0, - "embarquefecha": "2020-10-15T03:00:00Z", - "paquetepeso": 0.32, - "embarquecodigo": 1306, - "id": 956131, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2020-10-17T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "GAME, BEAUTY, ACC", - "paquetetracking": "1Z3Y12980394073541", - "cotizacion": 6960.0, - "embarquefecha": "2020-10-09T03:00:00Z", - "paquetepeso": 0.56, - "embarquecodigo": 1304, - "id": 954038, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2020-09-05T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "TOY", - "paquetetracking": "TBAMIA517341108", - "cotizacion": 6950.0, - "embarquefecha": "2020-09-01T04:00:00Z", - "paquetepeso": 1.0, - "embarquecodigo": 1288, - "id": 934876, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2020-09-05T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "AFTERSALE SERVICE CARD", - "paquetetracking": "TBA127347863201", - "cotizacion": 6980.0, - "embarquefecha": "2020-08-29T04:00:00Z", - "paquetepeso": 0.22, - "embarquecodigo": 1287, - "id": 933068, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2020-09-05T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "PRO GAMING HEAD SET", - "paquetetracking": "TBAMIA517132373", - "cotizacion": 6880.0, - "embarquefecha": "2020-08-12T04:00:00Z", - "paquetepeso": 0.63, - "embarquecodigo": 1278, - "id": 924029, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2020-06-08T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "LAMP,CASE", - "paquetetracking": "1Z065R0Y0308069733", - "cotizacion": 6550.0, - "embarquefecha": "2020-05-29T04:00:00Z", - "paquetepeso": 0.29, - "embarquecodigo": 1237, - "id": 886230, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2020-06-08T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "TECLADO", - "paquetetracking": "TBAMIA516222302", - "cotizacion": 6550.0, - "embarquefecha": "2020-05-29T04:00:00Z", - "paquetepeso": 1.53, - "embarquecodigo": 1237, - "id": 885495, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2020-03-11T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "ACCESSORY FOR PHONE", - "paquetetracking": "TBAMIA515530224", - "cotizacion": 6380.0, - "embarquefecha": "2020-03-06T03:00:00Z", - "paquetepeso": 0.2, - "embarquecodigo": 1188, - "id": 857737, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2020-03-11T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "CABLE", - "paquetetracking": "TBAMIA515530043", - "cotizacion": 6370.0, - "embarquefecha": "2020-03-02T03:00:00Z", - "paquetepeso": 0.13, - "embarquecodigo": 1184, - "id": 856543, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2020-02-17T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "REPLACEMENT JOYSTICK", - "paquetetracking": "TBAMIA515296390", - "cotizacion": 6390.0, - "embarquefecha": "2020-02-07T03:00:00Z", - "paquetepeso": 0.17, - "embarquecodigo": 1162, - "id": 847398, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2020-02-17T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "TOOL", - "paquetetracking": "TBAMIA515278300", - "cotizacion": 6390.0, - "embarquefecha": "2020-02-07T03:00:00Z", - "paquetepeso": 0.27, - "embarquecodigo": 1162, - "id": 847149, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2020-01-09T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "MOTHERBOARD,CORSAIR 2X 8GB/16,RYZER", - "paquetetracking": "TBAMIA514873604", - "cotizacion": 6380.0, - "embarquefecha": "2019-12-28T03:00:00Z", - "paquetepeso": 2.0, - "embarquecodigo": 1140, - "id": 830532, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2020-01-09T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "HARD DISK DRIVE", - "paquetetracking": "TBAMIA514830590", - "cotizacion": 6340.0, - "embarquefecha": "2019-12-20T03:00:00Z", - "paquetepeso": 0.13, - "embarquecodigo": 1137, - "id": 827974, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2019-12-24T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "ACC CARRO", - "paquetetracking": "TBAMIA514811488", - "cotizacion": 6340.0, - "embarquefecha": "2019-12-19T03:00:00Z", - "paquetepeso": 0.09, - "embarquecodigo": 1136, - "id": 827326, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2019-12-24T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "CASE", - "paquetetracking": "TBAMIA514747551", - "cotizacion": 6300.0, - "embarquefecha": "2019-12-18T03:00:00Z", - "paquetepeso": 0.08, - "embarquecodigo": 1135, - "id": 825416, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2019-12-19T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "ACCESORIOS TELEFONICOS", - "paquetetracking": "tbamia514667315", - "cotizacion": 6300.0, - "embarquefecha": "2019-12-13T03:00:00Z", - "paquetepeso": 0.64, - "embarquecodigo": 1133, - "id": 819827, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2019-12-07T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "KINDLE", - "paquetetracking": "1Z2Y842V0310077308", - "cotizacion": 6300.0, - "embarquefecha": "2019-12-04T03:00:00Z", - "paquetepeso": 0.35, - "embarquecodigo": 1126, - "id": 817478, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2019-12-07T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "STICKER", - "paquetetracking": "TBAMIA514356592", - "cotizacion": 6340.0, - "embarquefecha": "2019-11-22T03:00:00Z", - "paquetepeso": 0.22, - "embarquecodigo": 1122, - "id": 813184, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2019-11-12T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "ACC", - "paquetetracking": "TBAMIA514168338", - "cotizacion": 6380.0, - "embarquefecha": "2019-11-06T03:00:00Z", - "paquetepeso": 0.35, - "embarquecodigo": 1111, - "id": 807691, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2019-10-28T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "INTEL I5 PROCESSOR", - "paquetetracking": "420331869300120111403953047526", - "cotizacion": 6430.0, - "embarquefecha": "2019-10-22T03:00:00Z", - "paquetepeso": 0.06, - "embarquecodigo": 1100, - "id": 799384, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2019-10-12T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "MEMORIA", - "paquetetracking": "TBAMIA513787618", - "cotizacion": 6250.0, - "embarquefecha": "2019-10-01T04:00:00Z", - "paquetepeso": 0.08, - "embarquecodigo": 1084, - "id": 790341, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2019-10-05T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "REPUESTO", - "paquetetracking": "TBAMIA513786051", - "cotizacion": 6250.0, - "embarquefecha": "2019-10-02T04:00:00Z", - "paquetepeso": 0.02, - "embarquecodigo": 1085, - "id": 790257, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2019-10-05T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "BATERIA", - "paquetetracking": "TBAMIA513789690", - "cotizacion": 6280.0, - "embarquefecha": "2019-10-03T04:00:00Z", - "paquetepeso": 0.09, - "embarquecodigo": 1086, - "id": 790256, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2019-09-19T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "TABLET", - "paquetetracking": "TBAMIA513625177", - "cotizacion": 6220.0, - "embarquefecha": "2019-09-13T04:00:00Z", - "paquetepeso": 1.12, - "embarquecodigo": 1072, - "id": 783508, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2019-06-29T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "AURICULAR DEPORTIVO", - "paquetetracking": "TBA339987827000", - "cotizacion": 6190.0, - "embarquefecha": "2019-06-19T04:00:00Z", - "paquetepeso": 0.1, - "embarquecodigo": 1009, - "id": 746900, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2019-05-25T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "PLUG TO 3 SMM", - "paquetetracking": "TBAMIA512484367", - "cotizacion": 6300.0, - "embarquefecha": "2019-05-06T04:00:00Z", - "paquetepeso": 0.02, - "embarquecodigo": 975, - "id": 730712, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2019-04-27T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "DISIPADOR", - "paquetetracking": "tba029705722000", - "cotizacion": 6200.0, - "embarquefecha": "2019-04-11T04:00:00Z", - "paquetepeso": 0.61, - "embarquecodigo": 957, - "id": 720959, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2019-04-16T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "CABLE Y FLAUTA", - "paquetetracking": "TBAMIA512202954", - "cotizacion": 6190.0, - "embarquefecha": "2019-04-10T04:00:00Z", - "paquetepeso": 0.62, - "embarquecodigo": 956, - "id": 719726, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2019-04-11T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "PASTA TERMICA", - "paquetetracking": "TBAMIA512136102", - "cotizacion": 6160.0, - "embarquefecha": "2019-04-05T04:00:00Z", - "paquetepeso": 0.03, - "embarquecodigo": 953, - "id": 717669, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2019-04-05T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "TARJETA GRAFICA", - "paquetetracking": "tba975016822000", - "cotizacion": 6160.0, - "embarquefecha": "2019-03-29T04:00:00Z", - "paquetepeso": 1.76, - "embarquecodigo": 948, - "id": 716846, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2019-04-05T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "ADAPTADOR", - "paquetetracking": "TBA972343384000", - "cotizacion": 6160.0, - "embarquefecha": "2019-03-29T04:00:00Z", - "paquetepeso": 0.06, - "embarquecodigo": 948, - "id": 716253, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2019-04-11T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "PROCESADOR", - "paquetetracking": "9305520111403464999157", - "cotizacion": 6160.0, - "embarquefecha": "2019-04-05T04:00:00Z", - "paquetepeso": 0.08, - "embarquecodigo": 953, - "id": 716144, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2019-03-16T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "MOVIE", - "paquetetracking": "TBAMIA511800535", - "cotizacion": 6100.0, - "embarquefecha": "2019-03-07T03:00:00Z", - "paquetepeso": 0.17, - "embarquecodigo": 933, - "id": 707665, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2019-02-23T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "DISCO SSD", - "paquetetracking": "TBAMIA511591449", - "cotizacion": 6060.0, - "embarquefecha": "2019-02-19T03:00:00Z", - "paquetepeso": 0.09, - "embarquecodigo": 921, - "id": 701777, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2019-02-16T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "PELUCHE", - "paquetetracking": "TBAMIA511395953", - "cotizacion": 6150.0, - "embarquefecha": "2019-02-04T03:00:00Z", - "paquetepeso": 0.44, - "embarquecodigo": 911, - "id": 696541, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2019-01-07T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "SSD", - "paquetetracking": "1ZWX93600358185579", - "cotizacion": 5990.0, - "embarquefecha": "2018-12-28T03:00:00Z", - "paquetepeso": 0.06, - "embarquecodigo": 885, - "id": 683162, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2018-12-13T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "GLOVE", - "paquetetracking": "TBAMIA510396770", - "cotizacion": 5990.0, - "embarquefecha": "2018-12-03T03:00:00Z", - "paquetepeso": 1.22, - "embarquecodigo": 863, - "id": 673365, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2018-12-13T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "HEADPHONE", - "paquetetracking": "TBAMIA510354006", - "cotizacion": 5950.0, - "embarquefecha": "2018-11-30T03:00:00Z", - "paquetepeso": 0.44, - "embarquecodigo": 860, - "id": 672211, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2018-11-17T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 20.9, - "paquetedescripcion": "BOOK", - "paquetetracking": "1ZWX93600355372345", - "cotizacion": 6020.0, - "embarquefecha": "2018-11-09T03:00:00Z", - "paquetepeso": 0.33, - "embarquecodigo": 845, - "id": 665437, - "paqueteprecio": 20.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2018-10-27T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 18.9, - "paquetedescripcion": "TOY", - "paquetetracking": "1Z6X7R290300220187", - "cotizacion": 5910.0, - "embarquefecha": "2018-10-06T04:00:00Z", - "paquetepeso": 0.67, - "embarquecodigo": 818, - "id": 654361, - "paqueteprecio": 18.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2018-07-18T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 18.9, - "paquetedescripcion": "CLIPPER", - "paquetetracking": "1ZWX93600348793387", - "cotizacion": 5750.0, - "embarquefecha": "2018-07-06T04:00:00Z", - "paquetepeso": 0.62, - "embarquecodigo": 759, - "id": 616267, - "paqueteprecio": 18.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2018-05-26T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 18.9, - "paquetedescripcion": "TOY", - "paquetetracking": "420331869405515901715640489827", - "cotizacion": 5610.0, - "embarquefecha": "2018-05-14T04:00:00Z", - "paquetepeso": 0.55, - "embarquecodigo": 726, - "id": 593696, - "paqueteprecio": 18.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2018-05-09T04:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 18.9, - "paquetedescripcion": "PHONE, ACC", - "paquetetracking": "420331869374889677090205517696", - "cotizacion": 5540.0, - "embarquefecha": "2018-04-20T04:00:00Z", - "paquetepeso": 0.33, - "embarquecodigo": 715, - "id": 584028, - "paqueteprecio": 18.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2018-02-17T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 18.9, - "paquetedescripcion": "ACC", - "paquetetracking": "420331869200192148980219812545", - "cotizacion": 5610.0, - "embarquefecha": "2018-02-07T03:00:00Z", - "paquetepeso": 0.04, - "embarquecodigo": 676, - "id": 553285, - "paqueteprecio": 18.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2018-02-10T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 17.9, - "paquetedescripcion": "CARDS", - "paquetetracking": "420331869374889677090178841910", - "cotizacion": 5599.0, - "embarquefecha": "2018-02-02T03:00:00Z", - "paquetepeso": 0.12, - "embarquecodigo": 674, - "id": 552046, - "paqueteprecio": 17.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2018-02-10T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 17.9, - "paquetedescripcion": "ACC", - "paquetetracking": "NT180127172024528", - "cotizacion": 5680.0, - "embarquefecha": "2018-01-29T03:00:00Z", - "paquetepeso": 0.01, - "embarquecodigo": 672, - "id": 548151, - "paqueteprecio": 17.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2018-01-27T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 17.9, - "paquetedescripcion": "CARTAS", - "paquetetracking": "0173557748", - "cotizacion": 5680.0, - "embarquefecha": "2018-01-22T03:00:00Z", - "paquetepeso": 0.09, - "embarquecodigo": 668, - "id": 545168, - "paqueteprecio": 17.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2018-01-10T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 17.9, - "paquetedescripcion": "ACC", - "paquetetracking": "9920582556", - "cotizacion": 5680.0, - "embarquefecha": "2018-01-05T03:00:00Z", - "paquetepeso": 0.19, - "embarquecodigo": 660, - "id": 539115, - "paqueteprecio": 17.9 - }, - { - "estado": "C", - "embarqueestado": "ASUNCION", - "paquetefecharetiro": "2018-01-10T03:00:00Z", - "embarquemedio": "Aereo", - "tarifapreciocli": 17.9, - "paquetedescripcion": "CARDBOARD", - "paquetetracking": "1ZWX93600341081579", - "cotizacion": 5680.0, - "embarquefecha": "2018-01-02T03:00:00Z", - "paquetepeso": 0.19, - "embarquecodigo": 658, - "id": 537640, - "paqueteprecio": 17.9 - } - ] -} diff --git a/mobile-courier-app/Data/Networking/Models/AddressesModel.swift b/mobile-courier-app/Data/Networking/Models/AddressesModel.swift deleted file mode 100644 index 7f79d96..0000000 --- a/mobile-courier-app/Data/Networking/Models/AddressesModel.swift +++ /dev/null @@ -1,128 +0,0 @@ -// -// AddressesModel.swift -// mobile-courier-app -// -// Created by Vladimir Espinola on 2024-06-05. -// - -import Foundation -import JustACourierAppDomain - -struct AddressesModel: Codable { - let airShipments: ShipmentsModel - let seaShipments: ShipmentsModel - - enum CodingKeys: String, CodingKey { - case airShipments = "enviosAereos" - case seaShipments = "viaMaritima" - } -} - -struct ShipmentsModel: Codable { - let city: String - let client: ClientModel - let address: String - let company: String - let country: String - let phone: String - - enum CodingKeys: String, CodingKey { - case city = "ciudad" - case client = "cliente" - case address = "direccion" - case company = "empresa" - case country = "pais" - case phone = "telefono" - } -} - -struct ClientModel: Codable { - let classType: String - let id: Int - let authorizedLastName: String - let authorizeEmail: Int - let authorizedCi: String - let city: Int - let clientLastName: String - let clientCellPhone: String - let clientCi: String - let clientAddress: String - let clientFirstName: String - let clientNotes: String - let clientPhone: String - let birthDay: Int - let status: Int - let shelf: String - let birthMonth: Int - let authorizedFirstName: String - let annualPayment: String? - let password: String - let taxId: String - let rate: Double - let username: String - - enum CodingKeys: String, CodingKey { - case classType = "class" - case id - case authorizedLastName = "apellidoautorizado" - case authorizeEmail = "autorizaemail" - case authorizedCi = "ciautorizado" - case city = "ciudad" - case clientLastName = "clienteapellido" - case clientCellPhone = "clientecelular" - case clientCi = "clienteci" - case clientAddress = "clientedireccion" - case clientFirstName = "clientenombre" - case clientNotes = "clienteobservacion" - case clientPhone = "clientetelefono" - case birthDay = "dianac" - case status = "estado" - case shelf = "estante" - case birthMonth = "mesnac" - case authorizedFirstName = "nombreautorizado" - case annualPayment = "pagoanualidad" - case password - case taxId = "ruc" - case rate = "tarifa" - case username - } -} - -extension AddressesModel { - func asEntity() -> AddressesEntity { - .init( - airShipments: airShipments.asEntity(), - seaShipments: seaShipments.asEntity() - ) - } -} - -extension ShipmentsModel { - func asEntity() -> ShipmentsEntity { - .init( - city: city, - client: client.asEntity(), - address: address, - company: company, - country: country, - phone: phone - ) - } -} - -extension ClientModel { - func asEntity() -> ClientEntity { - .init( - id: id, - authorizeEmail: authorizeEmail, - authorizedCi: authorizedCi, - city: city, - clientCellPhone: clientCellPhone, - clientCi: clientCi, - clientPhone: clientPhone, - taxId: taxId, - rate: rate, - userName: username - ) - } -} diff --git a/mobile-courier-app/Data/Networking/Models/LoginModel.swift b/mobile-courier-app/Data/Networking/Models/LoginModel.swift deleted file mode 100644 index 1e4f53c..0000000 --- a/mobile-courier-app/Data/Networking/Models/LoginModel.swift +++ /dev/null @@ -1,21 +0,0 @@ -// -// LoginModel.swift -// mobile-courier-app -// -// Created by Vladimir Espinola on 2024-05-20. -// - -import Foundation -import JustACourierAppDomain - -struct LoginModel: Decodable { - var username: String - var accessToken: String - -} - -extension LoginModel { - func asEntity() -> LoginEntity { - .init(username: username, accessToken: accessToken) - } -} diff --git a/mobile-courier-app/Data/Networking/Models/PackagesModel.swift b/mobile-courier-app/Data/Networking/Models/PackagesModel.swift deleted file mode 100644 index e5de789..0000000 --- a/mobile-courier-app/Data/Networking/Models/PackagesModel.swift +++ /dev/null @@ -1,83 +0,0 @@ -// -// PackagesModel.swift -// mobile-courier-app -// -// Created by Vladimir Espinola on 2024-06-15. -// - -import Foundation -import JustACourierAppDomain - -struct PackagesModel: Codable { - let packages: [PackageModel] - - enum CodingKeys: String, CodingKey { - case packages = "paquetes" - } -} - -struct PackageModel: Codable { - let status: String - let shipmentStatus: String - var packagePickupDate: String? - let shipmentMethod: String - let clientPriceRate: Decimal - let packageDescription: String - let packageTrackingNumber: String - let quotation: Decimal - let shipmentDate: String - let packageWeight: Decimal - let shipmentCode: Int - let id: Int - let packagePrice: Decimal - - enum CodingKeys: String, CodingKey { - case status = "estado" - case shipmentStatus = "embarqueestado" - case packagePickupDate = "paquetefecharetiro" - case shipmentMethod = "embarquemedio" - case clientPriceRate = "tarifapreciocli" - case packageDescription = "paquetedescripcion" - case packageTrackingNumber = "paquetetracking" - case quotation = "cotizacion" - case shipmentDate = "embarquefecha" - case packageWeight = "paquetepeso" - case shipmentCode = "embarquecodigo" - case id - case packagePrice = "paqueteprecio" - } -} - -extension PackageModel { - func asEntity() -> PackageEntity { - return PackageEntity( - status: status, - shipmentStatus: shipmentStatus, - packagePickupDate: packagePickupDate ?? "", - shipmentMethod: shipmentMethod, - clientPriceRate: clientPriceRate, - packageDescription: packageDescription, - packageTrackingNumber: packageTrackingNumber, - quotation: quotation, - shipmentDate: shipmentDate, - packageWeight: packageWeight, - shipmentCode: shipmentCode, - id: id, - packagePrice: packagePrice - ) - } -} -extension PackagesModel { - func asEntity() -> [GroupedPackageEntity] { - Dictionary(grouping: packages, by: { $0.shipmentCode }) - .sorted(by: { - Int($0.key) > Int($1.key) - }) - .map { - GroupedPackageEntity( - shipmentCode: $0.key, - packages: $0.value.map { $0.asEntity() } - ) - } - } -} diff --git a/mobile-courier-app/Presentation/CoordinatorRootView.swift b/mobile-courier-app/Presentation/CoordinatorRootView.swift index d0d24de..543fd7f 100644 --- a/mobile-courier-app/Presentation/CoordinatorRootView.swift +++ b/mobile-courier-app/Presentation/CoordinatorRootView.swift @@ -6,6 +6,7 @@ // import SwiftUI +import JustACourierAppDomain struct CoordinatorRootView: View { @EnvironmentObject private var coordinator: Coordinator diff --git a/mobile-courier-app/Presentation/Helpers/HeaderView.swift b/mobile-courier-app/Presentation/Helpers/HeaderView.swift index 08b28f3..b15a909 100644 --- a/mobile-courier-app/Presentation/Helpers/HeaderView.swift +++ b/mobile-courier-app/Presentation/Helpers/HeaderView.swift @@ -6,6 +6,7 @@ // import SwiftUI +import JustACourierAppDomain struct HeaderView: View { @EnvironmentObject var appData: AppData diff --git a/mobile-courier-app/Presentation/Previews/AppDataMock.swift b/mobile-courier-app/Presentation/Previews/AppDataMock.swift index 114c069..4284f33 100644 --- a/mobile-courier-app/Presentation/Previews/AppDataMock.swift +++ b/mobile-courier-app/Presentation/Previews/AppDataMock.swift @@ -6,6 +6,7 @@ // import Foundation +import JustACourierAppDomain extension AppData { static var mock: AppData {