diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..4d711ef5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +TesteiOS/Podfile.lock +TesteiOS/.DS_Store +TesteiOS/Pods/* +TesteiOS/TesteiOS.xcworkspace/* +TesteiOS/TesteiOS.xcworkspace/ \ No newline at end of file diff --git a/20. Din [1926 - Ludwig Goller]/DINEngschriftStd.otf b/20. Din [1926 - Ludwig Goller]/DINEngschriftStd.otf new file mode 100755 index 00000000..ae85f8ee Binary files /dev/null and b/20. Din [1926 - Ludwig Goller]/DINEngschriftStd.otf differ diff --git a/20. Din [1926 - Ludwig Goller]/DINMittelschriftStd.otf b/20. Din [1926 - Ludwig Goller]/DINMittelschriftStd.otf new file mode 100755 index 00000000..9a6e0d4f Binary files /dev/null and b/20. Din [1926 - Ludwig Goller]/DINMittelschriftStd.otf differ diff --git a/20. Din [1926 - Ludwig Goller]/DINNeuzeitGroteskStd-BdCond.otf b/20. Din [1926 - Ludwig Goller]/DINNeuzeitGroteskStd-BdCond.otf new file mode 100755 index 00000000..1da42b06 Binary files /dev/null and b/20. Din [1926 - Ludwig Goller]/DINNeuzeitGroteskStd-BdCond.otf differ diff --git a/20. Din [1926 - Ludwig Goller]/DINNeuzeitGroteskStd-Light.otf b/20. Din [1926 - Ludwig Goller]/DINNeuzeitGroteskStd-Light.otf new file mode 100755 index 00000000..0cda2e5b Binary files /dev/null and b/20. Din [1926 - Ludwig Goller]/DINNeuzeitGroteskStd-Light.otf differ diff --git a/20. Din [1926 - Ludwig Goller]/DINPro-Black.otf b/20. Din [1926 - Ludwig Goller]/DINPro-Black.otf new file mode 100755 index 00000000..2092a7bb Binary files /dev/null and b/20. Din [1926 - Ludwig Goller]/DINPro-Black.otf differ diff --git a/20. Din [1926 - Ludwig Goller]/DINPro-Bold.otf b/20. Din [1926 - Ludwig Goller]/DINPro-Bold.otf new file mode 100755 index 00000000..7c839536 Binary files /dev/null and b/20. Din [1926 - Ludwig Goller]/DINPro-Bold.otf differ diff --git a/20. Din [1926 - Ludwig Goller]/DINPro-Light.otf b/20. Din [1926 - Ludwig Goller]/DINPro-Light.otf new file mode 100755 index 00000000..8a7f085a Binary files /dev/null and b/20. Din [1926 - Ludwig Goller]/DINPro-Light.otf differ diff --git a/20. Din [1926 - Ludwig Goller]/DINPro-Medium.otf b/20. Din [1926 - Ludwig Goller]/DINPro-Medium.otf new file mode 100755 index 00000000..b4608d06 Binary files /dev/null and b/20. Din [1926 - Ludwig Goller]/DINPro-Medium.otf differ diff --git a/20. Din [1926 - Ludwig Goller]/DINPro-Regular.otf b/20. Din [1926 - Ludwig Goller]/DINPro-Regular.otf new file mode 100755 index 00000000..84d57abb Binary files /dev/null and b/20. Din [1926 - Ludwig Goller]/DINPro-Regular.otf differ diff --git a/TesteiOS/Podfile b/TesteiOS/Podfile new file mode 100644 index 00000000..9e54be9c --- /dev/null +++ b/TesteiOS/Podfile @@ -0,0 +1,29 @@ +# Uncomment the next line to define a global platform for your project +# platform :ios, '9.0' + +target 'TesteiOS' do + # Comment the next line if you're not using Swift and don't want to use dynamic frameworks + use_frameworks! + + # Pods for TesteiOS + pod 'MBProgressHUD', '~> 1.1' + pod 'AlamofireObjectMapper', '~> 5.0' + pod 'Alamofire', '~> 4.5' + pod 'KeychainSwift', '~> 13.0' + pod 'MaterialComponents', '~> 70.0.0' + + target 'TesteiOSTests' do + inherit! :search_paths + # Pods for testing + pod 'AlamofireObjectMapper', '~> 5.0' + pod 'Alamofire', '~> 4.5' + end + + target 'TesteiOSUITests' do + inherit! :search_paths + # Pods for testing + pod 'AlamofireObjectMapper', '~> 5.0' + pod 'Alamofire', '~> 4.5' + end + +end diff --git a/TesteiOS/README.md b/TesteiOS/README.md new file mode 100644 index 00000000..c3c3e32d --- /dev/null +++ b/TesteiOS/README.md @@ -0,0 +1,10 @@ +# TESTE SANTANDER README + + +ARQUITETURA: CLEAN SWIFT + +- Instalar o cocoapods; +- Executar pod install pelo terminal, para a instalação das bibliotecas utilizadas no projeto. + +- Candidato: Anderson Jesus Ferreira da Silva +- Empresa: Accenture \ No newline at end of file diff --git a/TesteiOS/TesteiOS.xcodeproj/project.pbxproj b/TesteiOS/TesteiOS.xcodeproj/project.pbxproj new file mode 100644 index 00000000..15911b73 --- /dev/null +++ b/TesteiOS/TesteiOS.xcodeproj/project.pbxproj @@ -0,0 +1,1448 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 29E600897CBC0556D7047998 /* Pods_TesteiOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E5E4D9720FE2C8FA2B4C29F8 /* Pods_TesteiOS.framework */; }; + 594147B12283709D0009438F /* FormSuccessViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 594147B02283709D0009438F /* FormSuccessViewController.swift */; }; + 594147B322837E2B0009438F /* SectionScreens.swift in Sources */ = {isa = PBXBuildFile; fileRef = 594147B222837E2B0009438F /* SectionScreens.swift */; }; + 594147B7228387DA0009438F /* FundNameTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 594147B5228387DA0009438F /* FundNameTableViewCell.swift */; }; + 594147B8228387DA0009438F /* FundNameTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 594147B6228387DA0009438F /* FundNameTableViewCell.xib */; }; + 594147BC2283886C0009438F /* Spearador@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 594147B92283886B0009438F /* Spearador@3x.png */; }; + 594147BD2283886C0009438F /* Spearador@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 594147BA2283886C0009438F /* Spearador@2x.png */; }; + 594147BE2283886C0009438F /* Spearador.png in Resources */ = {isa = PBXBuildFile; fileRef = 594147BB2283886C0009438F /* Spearador.png */; }; + 594147C122838C840009438F /* AboutTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 594147BF22838C840009438F /* AboutTableViewCell.swift */; }; + 594147C222838C840009438F /* AboutTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 594147C022838C840009438F /* AboutTableViewCell.xib */; }; + 594147C522838D8F0009438F /* RiskTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 594147C322838D8F0009438F /* RiskTableViewCell.swift */; }; + 594147C622838D8F0009438F /* RiskTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 594147C422838D8F0009438F /* RiskTableViewCell.xib */; }; + 594147D622838E160009438F /* Risk3yellow@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 594147C722838E130009438F /* Risk3yellow@3x.png */; }; + 594147D722838E160009438F /* Risk3yellow.png in Resources */ = {isa = PBXBuildFile; fileRef = 594147C822838E140009438F /* Risk3yellow.png */; }; + 594147D822838E160009438F /* Risk5Orange.png in Resources */ = {isa = PBXBuildFile; fileRef = 594147C922838E140009438F /* Risk5Orange.png */; }; + 594147D922838E160009438F /* Risk5Orange@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 594147CA22838E140009438F /* Risk5Orange@3x.png */; }; + 594147DA22838E160009438F /* Risk4lightOrange@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 594147CB22838E140009438F /* Risk4lightOrange@3x.png */; }; + 594147DB22838E160009438F /* Risk3yellow@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 594147CC22838E140009438F /* Risk3yellow@2x.png */; }; + 594147DC22838E160009438F /* Risk2green@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 594147CD22838E140009438F /* Risk2green@2x.png */; }; + 594147DD22838E160009438F /* Risk4lightOrange@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 594147CE22838E140009438F /* Risk4lightOrange@2x.png */; }; + 594147DE22838E160009438F /* Risk2green.png in Resources */ = {isa = PBXBuildFile; fileRef = 594147CF22838E140009438F /* Risk2green.png */; }; + 594147DF22838E160009438F /* Risk1lightGreen@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 594147D022838E150009438F /* Risk1lightGreen@3x.png */; }; + 594147E022838E160009438F /* Risk4lightOrange.png in Resources */ = {isa = PBXBuildFile; fileRef = 594147D122838E150009438F /* Risk4lightOrange.png */; }; + 594147E122838E160009438F /* Risk1lightGreen@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 594147D222838E150009438F /* Risk1lightGreen@2x.png */; }; + 594147E222838E160009438F /* Risk2green@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 594147D322838E150009438F /* Risk2green@3x.png */; }; + 594147E322838E160009438F /* Risk1lightGreen.png in Resources */ = {isa = PBXBuildFile; fileRef = 594147D422838E150009438F /* Risk1lightGreen.png */; }; + 594147E422838E160009438F /* Risk5Orange@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 594147D522838E150009438F /* Risk5Orange@2x.png */; }; + 594147F6228390C30009438F /* selectedGreenRisk2.png in Resources */ = {isa = PBXBuildFile; fileRef = 594147E7228390C20009438F /* selectedGreenRisk2.png */; }; + 594147F7228390C30009438F /* selectedGreenRisk2@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 594147E8228390C20009438F /* selectedGreenRisk2@2x.png */; }; + 594147F8228390C30009438F /* selectedGreenRisk2@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 594147E9228390C20009438F /* selectedGreenRisk2@3x.png */; }; + 594147F9228390C30009438F /* selectedGreenRisk1@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 594147EA228390C20009438F /* selectedGreenRisk1@3x.png */; }; + 594147FA228390C30009438F /* selectedRedRisk5@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 594147EB228390C20009438F /* selectedRedRisk5@2x.png */; }; + 594147FB228390C30009438F /* selectedGreenRisk1@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 594147EC228390C20009438F /* selectedGreenRisk1@2x.png */; }; + 594147FC228390C30009438F /* selectedOrangeRisk4.png in Resources */ = {isa = PBXBuildFile; fileRef = 594147ED228390C20009438F /* selectedOrangeRisk4.png */; }; + 594147FD228390C30009438F /* selectedRedRisk5@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 594147EE228390C20009438F /* selectedRedRisk5@3x.png */; }; + 594147FE228390C30009438F /* selectedGreenRisk1.png in Resources */ = {isa = PBXBuildFile; fileRef = 594147EF228390C30009438F /* selectedGreenRisk1.png */; }; + 594147FF228390C30009438F /* selectedOrangeRisk4@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 594147F0228390C30009438F /* selectedOrangeRisk4@3x.png */; }; + 59414800228390C30009438F /* selectedOrangeRisk3@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 594147F1228390C30009438F /* selectedOrangeRisk3@3x.png */; }; + 59414801228390C30009438F /* selectedOrangeRisk4@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 594147F2228390C30009438F /* selectedOrangeRisk4@2x.png */; }; + 59414802228390C30009438F /* selectedRedRisk5.png in Resources */ = {isa = PBXBuildFile; fileRef = 594147F3228390C30009438F /* selectedRedRisk5.png */; }; + 59414803228390C30009438F /* selectedOrangeRisk3.png in Resources */ = {isa = PBXBuildFile; fileRef = 594147F4228390C30009438F /* selectedOrangeRisk3.png */; }; + 59414804228390C30009438F /* selectedOrangeRisk3@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 594147F5228390C30009438F /* selectedOrangeRisk3@2x.png */; }; + 59414807228394160009438F /* MoreInfoTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59414805228394160009438F /* MoreInfoTableViewCell.swift */; }; + 59414808228394160009438F /* MoreInfoTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 59414806228394160009438F /* MoreInfoTableViewCell.xib */; }; + 5941480B228396C40009438F /* InfoTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59414809228396C40009438F /* InfoTableViewCell.swift */; }; + 5941480C228396C40009438F /* InfoTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5941480A228396C40009438F /* InfoTableViewCell.xib */; }; + 5941480F228397E50009438F /* DownInfoTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5941480D228397E50009438F /* DownInfoTableViewCell.swift */; }; + 59414810228397E50009438F /* DownInfoTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5941480E228397E50009438F /* DownInfoTableViewCell.xib */; }; + 594148142283984A0009438F /* baixar@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 59414811228398490009438F /* baixar@3x.png */; }; + 594148152283984A0009438F /* baixar.png in Resources */ = {isa = PBXBuildFile; fileRef = 594148122283984A0009438F /* baixar.png */; }; + 594148162283984A0009438F /* baixar@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 594148132283984A0009438F /* baixar@2x.png */; }; + 5941481822839B500009438F /* DetailRouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5941481722839B500009438F /* DetailRouter.swift */; }; + 59AF504E2280B80A00C02992 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF504D2280B80A00C02992 /* AppDelegate.swift */; }; + 59AF50502280B80A00C02992 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF504F2280B80A00C02992 /* ViewController.swift */; }; + 59AF50532280B80A00C02992 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 59AF50512280B80A00C02992 /* Main.storyboard */; }; + 59AF50552280B80C00C02992 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 59AF50542280B80C00C02992 /* Assets.xcassets */; }; + 59AF50582280B80C00C02992 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 59AF50562280B80C00C02992 /* LaunchScreen.storyboard */; }; + 59AF506E2280B80D00C02992 /* TesteiOSUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF506D2280B80D00C02992 /* TesteiOSUITests.swift */; }; + 59AF50872280C0C700C02992 /* Type.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50862280C0C700C02992 /* Type.swift */; }; + 59AF50892280C10900C02992 /* TypeField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50882280C10900C02992 /* TypeField.swift */; }; + 59AF508B2280C2DB00C02992 /* Cells.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF508A2280C2DB00C02992 /* Cells.swift */; }; + 59AF508D2280C33200C02992 /* CellsList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF508C2280C33200C02992 /* CellsList.swift */; }; + 59AF50992280CC4300C02992 /* Year.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50912280CC4300C02992 /* Year.swift */; }; + 59AF509B2280CC4300C02992 /* MoreInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50932280CC4300C02992 /* MoreInfo.swift */; }; + 59AF509C2280CC4300C02992 /* Months12.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50942280CC4300C02992 /* Months12.swift */; }; + 59AF509D2280CC4300C02992 /* Screen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50952280CC4300C02992 /* Screen.swift */; }; + 59AF509E2280CC4300C02992 /* DownInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50962280CC4300C02992 /* DownInfo.swift */; }; + 59AF509F2280CC4300C02992 /* Info.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50972280CC4300C02992 /* Info.swift */; }; + 59AF50A12280D93300C02992 /* Month.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50A02280D93300C02992 /* Month.swift */; }; + 59AF50A32280DD5500C02992 /* BaseClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50A22280DD5500C02992 /* BaseClass.swift */; }; + 59AF50AE2280DEDD00C02992 /* DINPro-Medium.otf in Resources */ = {isa = PBXBuildFile; fileRef = 59AF50A52280DEDD00C02992 /* DINPro-Medium.otf */; }; + 59AF50AF2280DEDD00C02992 /* DINNeuzeitGroteskStd-BdCond.otf in Resources */ = {isa = PBXBuildFile; fileRef = 59AF50A62280DEDD00C02992 /* DINNeuzeitGroteskStd-BdCond.otf */; }; + 59AF50B02280DEDD00C02992 /* DINPro-Light.otf in Resources */ = {isa = PBXBuildFile; fileRef = 59AF50A72280DEDD00C02992 /* DINPro-Light.otf */; }; + 59AF50B12280DEDD00C02992 /* DINPro-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 59AF50A82280DEDD00C02992 /* DINPro-Regular.otf */; }; + 59AF50B22280DEDD00C02992 /* DINPro-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 59AF50A92280DEDD00C02992 /* DINPro-Bold.otf */; }; + 59AF50B32280DEDD00C02992 /* DINEngschriftStd.otf in Resources */ = {isa = PBXBuildFile; fileRef = 59AF50AA2280DEDD00C02992 /* DINEngschriftStd.otf */; }; + 59AF50B42280DEDD00C02992 /* DINMittelschriftStd.otf in Resources */ = {isa = PBXBuildFile; fileRef = 59AF50AB2280DEDD00C02992 /* DINMittelschriftStd.otf */; }; + 59AF50B52280DEDD00C02992 /* DINPro-Black.otf in Resources */ = {isa = PBXBuildFile; fileRef = 59AF50AC2280DEDD00C02992 /* DINPro-Black.otf */; }; + 59AF50B62280DEDD00C02992 /* DINNeuzeitGroteskStd-Light.otf in Resources */ = {isa = PBXBuildFile; fileRef = 59AF50AD2280DEDD00C02992 /* DINNeuzeitGroteskStd-Light.otf */; }; + 59AF50C12280E6D600C02992 /* arrowDown@1x.png in Resources */ = {isa = PBXBuildFile; fileRef = 59AF50B82280E6D500C02992 /* arrowDown@1x.png */; }; + 59AF50C22280E6D600C02992 /* share@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 59AF50B92280E6D500C02992 /* share@2x.png */; }; + 59AF50C32280E6D600C02992 /* arrowDown@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 59AF50BA2280E6D500C02992 /* arrowDown@2x.png */; }; + 59AF50C42280E6D600C02992 /* download@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 59AF50BB2280E6D500C02992 /* download@2x.png */; }; + 59AF50C52280E6D600C02992 /* arrowDown@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 59AF50BC2280E6D500C02992 /* arrowDown@3x.png */; }; + 59AF50C62280E6D600C02992 /* share@1x.png in Resources */ = {isa = PBXBuildFile; fileRef = 59AF50BD2280E6D500C02992 /* share@1x.png */; }; + 59AF50C72280E6D600C02992 /* share@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 59AF50BE2280E6D500C02992 /* share@3x.png */; }; + 59AF50C82280E6D600C02992 /* download@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 59AF50BF2280E6D600C02992 /* download@3x.png */; }; + 59AF50C92280E6D600C02992 /* download@1x.png in Resources */ = {isa = PBXBuildFile; fileRef = 59AF50C02280E6D600C02992 /* download@1x.png */; }; + 59AF50CC2281B1B400C02992 /* FormProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50CB2281B1B400C02992 /* FormProvider.swift */; }; + 59AF50CE2281B1F300C02992 /* RouterAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50CD2281B1F300C02992 /* RouterAPI.swift */; }; + 59AF50D02281C7B700C02992 /* FormInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50CF2281C7B700C02992 /* FormInteractor.swift */; }; + 59AF50D22281C93300C02992 /* FormPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50D12281C93300C02992 /* FormPresenter.swift */; }; + 59AF50D42281CA4B00C02992 /* FormWireframe.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50D32281CA4B00C02992 /* FormWireframe.swift */; }; + 59AF50D62281CAAC00C02992 /* FormViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50D52281CAAC00C02992 /* FormViewController.swift */; }; + 59AF50D92281CDD800C02992 /* DetailProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50D82281CDD800C02992 /* DetailProvider.swift */; }; + 59AF50DB2281CEA600C02992 /* DetailInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50DA2281CEA600C02992 /* DetailInteractor.swift */; }; + 59AF50DD2281CFC100C02992 /* DetailPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50DC2281CFC100C02992 /* DetailPresenter.swift */; }; + 59AF50DF2281D03500C02992 /* DetailWireframe.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50DE2281D03500C02992 /* DetailWireframe.swift */; }; + 59AF50E12281D08B00C02992 /* DetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50E02281D08B00C02992 /* DetailViewController.swift */; }; + 59AF50E42281F06400C02992 /* ButtonStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50E32281F06400C02992 /* ButtonStyle.swift */; }; + 59AF50E62281F0C100C02992 /* Extension+UIColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50E52281F0C100C02992 /* Extension+UIColor.swift */; }; + 59AF50E82281F42100C02992 /* Extension+UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50E72281F42100C02992 /* Extension+UIImage.swift */; }; + 59AF50EA2281F45400C02992 /* Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50E92281F45400C02992 /* Extension.swift */; }; + 59AF50EE2282092B00C02992 /* TextFieldTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50EC2282092B00C02992 /* TextFieldTableViewCell.swift */; }; + 59AF50EF2282092B00C02992 /* TextFieldTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 59AF50ED2282092B00C02992 /* TextFieldTableViewCell.xib */; }; + 59AF50F22282179800C02992 /* BtnFormTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50F02282179800C02992 /* BtnFormTableViewCell.swift */; }; + 59AF50F32282179800C02992 /* BtnFormTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 59AF50F12282179800C02992 /* BtnFormTableViewCell.xib */; }; + 59AF50F6228219DB00C02992 /* TitleFormTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50F4228219DB00C02992 /* TitleFormTableViewCell.swift */; }; + 59AF50F7228219DB00C02992 /* TitleFormTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 59AF50F5228219DB00C02992 /* TitleFormTableViewCell.xib */; }; + 59AF50FA22821A9400C02992 /* CheckFormTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50F822821A9400C02992 /* CheckFormTableViewCell.swift */; }; + 59AF50FB22821A9400C02992 /* CheckFormTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 59AF50F922821A9400C02992 /* CheckFormTableViewCell.xib */; }; + 59AF510222821BB500C02992 /* unchecked@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 59AF50FC22821BB400C02992 /* unchecked@3x.png */; }; + 59AF510322821BB500C02992 /* checked.png in Resources */ = {isa = PBXBuildFile; fileRef = 59AF50FD22821BB400C02992 /* checked.png */; }; + 59AF510422821BB500C02992 /* unchecked.png in Resources */ = {isa = PBXBuildFile; fileRef = 59AF50FE22821BB500C02992 /* unchecked.png */; }; + 59AF510522821BB500C02992 /* checked@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 59AF50FF22821BB500C02992 /* checked@3x.png */; }; + 59AF510622821BB500C02992 /* unchecked@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 59AF510022821BB500C02992 /* unchecked@2x.png */; }; + 59AF510722821BB500C02992 /* checked@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 59AF510122821BB500C02992 /* checked@2x.png */; }; + 59AF51092283110600C02992 /* Validator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF51082283110500C02992 /* Validator.swift */; }; + 59AF510B2283112900C02992 /* Extension+String.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF510A2283112900C02992 /* Extension+String.swift */; }; + 59D070F72284936200AC9C62 /* FormProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50CB2281B1B400C02992 /* FormProvider.swift */; }; + 59D070F92284939700AC9C62 /* FormTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59D070F82284939700AC9C62 /* FormTestCase.swift */; }; + 59D070FA2284946500AC9C62 /* CellsList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF508C2280C33200C02992 /* CellsList.swift */; }; + 59D070FB2284946900AC9C62 /* Cells.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF508A2280C2DB00C02992 /* Cells.swift */; }; + 59D070FD228496DD00AC9C62 /* DetailTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59D070FC228496DD00AC9C62 /* DetailTestCase.swift */; }; + 59D070FE228496F500AC9C62 /* DetailProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50D82281CDD800C02992 /* DetailProvider.swift */; }; + 59D070FF2284974100AC9C62 /* Months12.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50942280CC4300C02992 /* Months12.swift */; }; + 59D071002284974100AC9C62 /* DownInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50962280CC4300C02992 /* DownInfo.swift */; }; + 59D071012284974100AC9C62 /* Info.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50972280CC4300C02992 /* Info.swift */; }; + 59D071022284974100AC9C62 /* MoreInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50932280CC4300C02992 /* MoreInfo.swift */; }; + 59D071032284974100AC9C62 /* Screen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50952280CC4300C02992 /* Screen.swift */; }; + 59D071042284974100AC9C62 /* Year.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50912280CC4300C02992 /* Year.swift */; }; + 59D071052284974100AC9C62 /* Month.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50A02280D93300C02992 /* Month.swift */; }; + 59D071062284974100AC9C62 /* BaseClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50A22280DD5500C02992 /* BaseClass.swift */; }; + 59D071072284974100AC9C62 /* SectionScreens.swift in Sources */ = {isa = PBXBuildFile; fileRef = 594147B222837E2B0009438F /* SectionScreens.swift */; }; + 59D071082284983C00AC9C62 /* RouterAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59AF50CD2281B1F300C02992 /* RouterAPI.swift */; }; + D0D79162DCD9BD2BA488DB91 /* Pods_TesteiOSTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3D7D58E0D6C85DB858DE33B0 /* Pods_TesteiOSTests.framework */; }; + FD947EA6022138BE114FDAF4 /* Pods_TesteiOSUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 91FAD516D0935DC518A68015 /* Pods_TesteiOSUITests.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 59AF505F2280B80D00C02992 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 59AF50422280B80A00C02992 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 59AF50492280B80A00C02992; + remoteInfo = TesteiOS; + }; + 59AF506A2280B80D00C02992 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 59AF50422280B80A00C02992 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 59AF50492280B80A00C02992; + remoteInfo = TesteiOS; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 3D7D58E0D6C85DB858DE33B0 /* Pods_TesteiOSTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_TesteiOSTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 3EC76BA55875FB43F8B305FC /* Pods-TesteiOSUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TesteiOSUITests.debug.xcconfig"; path = "Target Support Files/Pods-TesteiOSUITests/Pods-TesteiOSUITests.debug.xcconfig"; sourceTree = ""; }; + 4541E9174580859F457DA9CD /* Pods-TesteiOSTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TesteiOSTests.debug.xcconfig"; path = "Target Support Files/Pods-TesteiOSTests/Pods-TesteiOSTests.debug.xcconfig"; sourceTree = ""; }; + 594147B02283709D0009438F /* FormSuccessViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FormSuccessViewController.swift; sourceTree = ""; }; + 594147B222837E2B0009438F /* SectionScreens.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SectionScreens.swift; sourceTree = ""; }; + 594147B5228387DA0009438F /* FundNameTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FundNameTableViewCell.swift; sourceTree = ""; }; + 594147B6228387DA0009438F /* FundNameTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FundNameTableViewCell.xib; sourceTree = ""; }; + 594147B92283886B0009438F /* Spearador@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Spearador@3x.png"; sourceTree = ""; }; + 594147BA2283886C0009438F /* Spearador@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Spearador@2x.png"; sourceTree = ""; }; + 594147BB2283886C0009438F /* Spearador.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Spearador.png; sourceTree = ""; }; + 594147BF22838C840009438F /* AboutTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutTableViewCell.swift; sourceTree = ""; }; + 594147C022838C840009438F /* AboutTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AboutTableViewCell.xib; sourceTree = ""; }; + 594147C322838D8F0009438F /* RiskTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RiskTableViewCell.swift; sourceTree = ""; }; + 594147C422838D8F0009438F /* RiskTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = RiskTableViewCell.xib; sourceTree = ""; }; + 594147C722838E130009438F /* Risk3yellow@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Risk3yellow@3x.png"; sourceTree = ""; }; + 594147C822838E140009438F /* Risk3yellow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Risk3yellow.png; sourceTree = ""; }; + 594147C922838E140009438F /* Risk5Orange.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Risk5Orange.png; sourceTree = ""; }; + 594147CA22838E140009438F /* Risk5Orange@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Risk5Orange@3x.png"; sourceTree = ""; }; + 594147CB22838E140009438F /* Risk4lightOrange@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Risk4lightOrange@3x.png"; sourceTree = ""; }; + 594147CC22838E140009438F /* Risk3yellow@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Risk3yellow@2x.png"; sourceTree = ""; }; + 594147CD22838E140009438F /* Risk2green@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Risk2green@2x.png"; sourceTree = ""; }; + 594147CE22838E140009438F /* Risk4lightOrange@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Risk4lightOrange@2x.png"; sourceTree = ""; }; + 594147CF22838E140009438F /* Risk2green.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Risk2green.png; sourceTree = ""; }; + 594147D022838E150009438F /* Risk1lightGreen@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Risk1lightGreen@3x.png"; sourceTree = ""; }; + 594147D122838E150009438F /* Risk4lightOrange.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Risk4lightOrange.png; sourceTree = ""; }; + 594147D222838E150009438F /* Risk1lightGreen@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Risk1lightGreen@2x.png"; sourceTree = ""; }; + 594147D322838E150009438F /* Risk2green@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Risk2green@3x.png"; sourceTree = ""; }; + 594147D422838E150009438F /* Risk1lightGreen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Risk1lightGreen.png; sourceTree = ""; }; + 594147D522838E150009438F /* Risk5Orange@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Risk5Orange@2x.png"; sourceTree = ""; }; + 594147E7228390C20009438F /* selectedGreenRisk2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = selectedGreenRisk2.png; sourceTree = ""; }; + 594147E8228390C20009438F /* selectedGreenRisk2@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "selectedGreenRisk2@2x.png"; sourceTree = ""; }; + 594147E9228390C20009438F /* selectedGreenRisk2@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "selectedGreenRisk2@3x.png"; sourceTree = ""; }; + 594147EA228390C20009438F /* selectedGreenRisk1@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "selectedGreenRisk1@3x.png"; sourceTree = ""; }; + 594147EB228390C20009438F /* selectedRedRisk5@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "selectedRedRisk5@2x.png"; sourceTree = ""; }; + 594147EC228390C20009438F /* selectedGreenRisk1@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "selectedGreenRisk1@2x.png"; sourceTree = ""; }; + 594147ED228390C20009438F /* selectedOrangeRisk4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = selectedOrangeRisk4.png; sourceTree = ""; }; + 594147EE228390C20009438F /* selectedRedRisk5@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "selectedRedRisk5@3x.png"; sourceTree = ""; }; + 594147EF228390C30009438F /* selectedGreenRisk1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = selectedGreenRisk1.png; sourceTree = ""; }; + 594147F0228390C30009438F /* selectedOrangeRisk4@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "selectedOrangeRisk4@3x.png"; sourceTree = ""; }; + 594147F1228390C30009438F /* selectedOrangeRisk3@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "selectedOrangeRisk3@3x.png"; sourceTree = ""; }; + 594147F2228390C30009438F /* selectedOrangeRisk4@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "selectedOrangeRisk4@2x.png"; sourceTree = ""; }; + 594147F3228390C30009438F /* selectedRedRisk5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = selectedRedRisk5.png; sourceTree = ""; }; + 594147F4228390C30009438F /* selectedOrangeRisk3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = selectedOrangeRisk3.png; sourceTree = ""; }; + 594147F5228390C30009438F /* selectedOrangeRisk3@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "selectedOrangeRisk3@2x.png"; sourceTree = ""; }; + 59414805228394160009438F /* MoreInfoTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MoreInfoTableViewCell.swift; sourceTree = ""; }; + 59414806228394160009438F /* MoreInfoTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MoreInfoTableViewCell.xib; sourceTree = ""; }; + 59414809228396C40009438F /* InfoTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InfoTableViewCell.swift; sourceTree = ""; }; + 5941480A228396C40009438F /* InfoTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = InfoTableViewCell.xib; sourceTree = ""; }; + 5941480D228397E50009438F /* DownInfoTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DownInfoTableViewCell.swift; sourceTree = ""; }; + 5941480E228397E50009438F /* DownInfoTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = DownInfoTableViewCell.xib; sourceTree = ""; }; + 59414811228398490009438F /* baixar@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "baixar@3x.png"; sourceTree = ""; }; + 594148122283984A0009438F /* baixar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = baixar.png; sourceTree = ""; }; + 594148132283984A0009438F /* baixar@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "baixar@2x.png"; sourceTree = ""; }; + 5941481722839B500009438F /* DetailRouter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailRouter.swift; sourceTree = ""; }; + 59AF504A2280B80A00C02992 /* TesteiOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TesteiOS.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 59AF504D2280B80A00C02992 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 59AF504F2280B80A00C02992 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 59AF50522280B80A00C02992 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 59AF50542280B80C00C02992 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 59AF50572280B80C00C02992 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 59AF50592280B80C00C02992 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 59AF505E2280B80D00C02992 /* TesteiOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TesteiOSTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 59AF50642280B80D00C02992 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 59AF50692280B80D00C02992 /* TesteiOSUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TesteiOSUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 59AF506D2280B80D00C02992 /* TesteiOSUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TesteiOSUITests.swift; sourceTree = ""; }; + 59AF506F2280B80D00C02992 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 59AF50862280C0C700C02992 /* Type.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Type.swift; sourceTree = ""; }; + 59AF50882280C10900C02992 /* TypeField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TypeField.swift; sourceTree = ""; }; + 59AF508A2280C2DB00C02992 /* Cells.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Cells.swift; sourceTree = ""; }; + 59AF508C2280C33200C02992 /* CellsList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CellsList.swift; sourceTree = ""; }; + 59AF50912280CC4300C02992 /* Year.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Year.swift; sourceTree = ""; }; + 59AF50932280CC4300C02992 /* MoreInfo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MoreInfo.swift; sourceTree = ""; }; + 59AF50942280CC4300C02992 /* Months12.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Months12.swift; sourceTree = ""; }; + 59AF50952280CC4300C02992 /* Screen.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Screen.swift; sourceTree = ""; }; + 59AF50962280CC4300C02992 /* DownInfo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DownInfo.swift; sourceTree = ""; }; + 59AF50972280CC4300C02992 /* Info.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Info.swift; sourceTree = ""; }; + 59AF50A02280D93300C02992 /* Month.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Month.swift; sourceTree = ""; }; + 59AF50A22280DD5500C02992 /* BaseClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseClass.swift; sourceTree = ""; }; + 59AF50A52280DEDD00C02992 /* DINPro-Medium.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "DINPro-Medium.otf"; sourceTree = ""; }; + 59AF50A62280DEDD00C02992 /* DINNeuzeitGroteskStd-BdCond.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "DINNeuzeitGroteskStd-BdCond.otf"; sourceTree = ""; }; + 59AF50A72280DEDD00C02992 /* DINPro-Light.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "DINPro-Light.otf"; sourceTree = ""; }; + 59AF50A82280DEDD00C02992 /* DINPro-Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "DINPro-Regular.otf"; sourceTree = ""; }; + 59AF50A92280DEDD00C02992 /* DINPro-Bold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "DINPro-Bold.otf"; sourceTree = ""; }; + 59AF50AA2280DEDD00C02992 /* DINEngschriftStd.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = DINEngschriftStd.otf; sourceTree = ""; }; + 59AF50AB2280DEDD00C02992 /* DINMittelschriftStd.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = DINMittelschriftStd.otf; sourceTree = ""; }; + 59AF50AC2280DEDD00C02992 /* DINPro-Black.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "DINPro-Black.otf"; sourceTree = ""; }; + 59AF50AD2280DEDD00C02992 /* DINNeuzeitGroteskStd-Light.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "DINNeuzeitGroteskStd-Light.otf"; sourceTree = ""; }; + 59AF50B82280E6D500C02992 /* arrowDown@1x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "arrowDown@1x.png"; sourceTree = ""; }; + 59AF50B92280E6D500C02992 /* share@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "share@2x.png"; sourceTree = ""; }; + 59AF50BA2280E6D500C02992 /* arrowDown@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "arrowDown@2x.png"; sourceTree = ""; }; + 59AF50BB2280E6D500C02992 /* download@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "download@2x.png"; sourceTree = ""; }; + 59AF50BC2280E6D500C02992 /* arrowDown@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "arrowDown@3x.png"; sourceTree = ""; }; + 59AF50BD2280E6D500C02992 /* share@1x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "share@1x.png"; sourceTree = ""; }; + 59AF50BE2280E6D500C02992 /* share@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "share@3x.png"; sourceTree = ""; }; + 59AF50BF2280E6D600C02992 /* download@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "download@3x.png"; sourceTree = ""; }; + 59AF50C02280E6D600C02992 /* download@1x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "download@1x.png"; sourceTree = ""; }; + 59AF50CB2281B1B400C02992 /* FormProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FormProvider.swift; sourceTree = ""; }; + 59AF50CD2281B1F300C02992 /* RouterAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RouterAPI.swift; sourceTree = ""; }; + 59AF50CF2281C7B700C02992 /* FormInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FormInteractor.swift; sourceTree = ""; }; + 59AF50D12281C93300C02992 /* FormPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FormPresenter.swift; sourceTree = ""; }; + 59AF50D32281CA4B00C02992 /* FormWireframe.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FormWireframe.swift; sourceTree = ""; }; + 59AF50D52281CAAC00C02992 /* FormViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FormViewController.swift; sourceTree = ""; }; + 59AF50D82281CDD800C02992 /* DetailProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailProvider.swift; sourceTree = ""; }; + 59AF50DA2281CEA600C02992 /* DetailInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailInteractor.swift; sourceTree = ""; }; + 59AF50DC2281CFC100C02992 /* DetailPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailPresenter.swift; sourceTree = ""; }; + 59AF50DE2281D03500C02992 /* DetailWireframe.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailWireframe.swift; sourceTree = ""; }; + 59AF50E02281D08B00C02992 /* DetailViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailViewController.swift; sourceTree = ""; }; + 59AF50E32281F06400C02992 /* ButtonStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ButtonStyle.swift; sourceTree = ""; }; + 59AF50E52281F0C100C02992 /* Extension+UIColor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Extension+UIColor.swift"; sourceTree = ""; }; + 59AF50E72281F42100C02992 /* Extension+UIImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Extension+UIImage.swift"; sourceTree = ""; }; + 59AF50E92281F45400C02992 /* Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extension.swift; sourceTree = ""; }; + 59AF50EC2282092B00C02992 /* TextFieldTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextFieldTableViewCell.swift; sourceTree = ""; }; + 59AF50ED2282092B00C02992 /* TextFieldTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TextFieldTableViewCell.xib; sourceTree = ""; }; + 59AF50F02282179800C02992 /* BtnFormTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BtnFormTableViewCell.swift; sourceTree = ""; }; + 59AF50F12282179800C02992 /* BtnFormTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = BtnFormTableViewCell.xib; sourceTree = ""; }; + 59AF50F4228219DB00C02992 /* TitleFormTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TitleFormTableViewCell.swift; sourceTree = ""; }; + 59AF50F5228219DB00C02992 /* TitleFormTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TitleFormTableViewCell.xib; sourceTree = ""; }; + 59AF50F822821A9400C02992 /* CheckFormTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheckFormTableViewCell.swift; sourceTree = ""; }; + 59AF50F922821A9400C02992 /* CheckFormTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CheckFormTableViewCell.xib; sourceTree = ""; }; + 59AF50FC22821BB400C02992 /* unchecked@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "unchecked@3x.png"; sourceTree = ""; }; + 59AF50FD22821BB400C02992 /* checked.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = checked.png; sourceTree = ""; }; + 59AF50FE22821BB500C02992 /* unchecked.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = unchecked.png; sourceTree = ""; }; + 59AF50FF22821BB500C02992 /* checked@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "checked@3x.png"; sourceTree = ""; }; + 59AF510022821BB500C02992 /* unchecked@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "unchecked@2x.png"; sourceTree = ""; }; + 59AF510122821BB500C02992 /* checked@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "checked@2x.png"; sourceTree = ""; }; + 59AF51082283110500C02992 /* Validator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Validator.swift; sourceTree = ""; }; + 59AF510A2283112900C02992 /* Extension+String.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Extension+String.swift"; sourceTree = ""; }; + 59D070F82284939700AC9C62 /* FormTestCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FormTestCase.swift; sourceTree = ""; }; + 59D070FC228496DD00AC9C62 /* DetailTestCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailTestCase.swift; sourceTree = ""; }; + 6E5F438C309A40F9E533086D /* Pods-TesteiOSTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TesteiOSTests.release.xcconfig"; path = "Target Support Files/Pods-TesteiOSTests/Pods-TesteiOSTests.release.xcconfig"; sourceTree = ""; }; + 833F093BD3C8C316527AE625 /* Pods-TesteiOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TesteiOS.release.xcconfig"; path = "Target Support Files/Pods-TesteiOS/Pods-TesteiOS.release.xcconfig"; sourceTree = ""; }; + 91FAD516D0935DC518A68015 /* Pods_TesteiOSUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_TesteiOSUITests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B9B466CC0B4064B91AB056B1 /* Pods-TesteiOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TesteiOS.debug.xcconfig"; path = "Target Support Files/Pods-TesteiOS/Pods-TesteiOS.debug.xcconfig"; sourceTree = ""; }; + D46F35669A013E736BAB1A19 /* Pods-TesteiOSUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-TesteiOSUITests.release.xcconfig"; path = "Target Support Files/Pods-TesteiOSUITests/Pods-TesteiOSUITests.release.xcconfig"; sourceTree = ""; }; + E5E4D9720FE2C8FA2B4C29F8 /* Pods_TesteiOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_TesteiOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 59AF50472280B80A00C02992 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 29E600897CBC0556D7047998 /* Pods_TesteiOS.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 59AF505B2280B80D00C02992 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D0D79162DCD9BD2BA488DB91 /* Pods_TesteiOSTests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 59AF50662280B80D00C02992 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + FD947EA6022138BE114FDAF4 /* Pods_TesteiOSUITests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 3FA8CA8646AD428414822C5C /* Frameworks */ = { + isa = PBXGroup; + children = ( + E5E4D9720FE2C8FA2B4C29F8 /* Pods_TesteiOS.framework */, + 3D7D58E0D6C85DB858DE33B0 /* Pods_TesteiOSTests.framework */, + 91FAD516D0935DC518A68015 /* Pods_TesteiOSUITests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 594147B4228387AB0009438F /* Details */ = { + isa = PBXGroup; + children = ( + 594147B5228387DA0009438F /* FundNameTableViewCell.swift */, + 594147B6228387DA0009438F /* FundNameTableViewCell.xib */, + 594147BF22838C840009438F /* AboutTableViewCell.swift */, + 594147C022838C840009438F /* AboutTableViewCell.xib */, + 594147C322838D8F0009438F /* RiskTableViewCell.swift */, + 594147C422838D8F0009438F /* RiskTableViewCell.xib */, + 59414805228394160009438F /* MoreInfoTableViewCell.swift */, + 59414806228394160009438F /* MoreInfoTableViewCell.xib */, + 59414809228396C40009438F /* InfoTableViewCell.swift */, + 5941480A228396C40009438F /* InfoTableViewCell.xib */, + 5941480D228397E50009438F /* DownInfoTableViewCell.swift */, + 5941480E228397E50009438F /* DownInfoTableViewCell.xib */, + ); + path = Details; + sourceTree = ""; + }; + 59AF50412280B80A00C02992 = { + isa = PBXGroup; + children = ( + 59AF504C2280B80A00C02992 /* TesteiOS */, + 59AF50612280B80D00C02992 /* TesteiOSTests */, + 59AF506C2280B80D00C02992 /* TesteiOSUITests */, + 59AF504B2280B80A00C02992 /* Products */, + 758CEC463CE4888420C497EC /* Pods */, + 3FA8CA8646AD428414822C5C /* Frameworks */, + ); + sourceTree = ""; + }; + 59AF504B2280B80A00C02992 /* Products */ = { + isa = PBXGroup; + children = ( + 59AF504A2280B80A00C02992 /* TesteiOS.app */, + 59AF505E2280B80D00C02992 /* TesteiOSTests.xctest */, + 59AF50692280B80D00C02992 /* TesteiOSUITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 59AF504C2280B80A00C02992 /* TesteiOS */ = { + isa = PBXGroup; + children = ( + 59AF50592280B80C00C02992 /* Info.plist */, + 59AF504D2280B80A00C02992 /* AppDelegate.swift */, + 59AF507E2280BED200C02992 /* Application */, + 59AF507B2280BDEF00C02992 /* Resource */, + 59AF504F2280B80A00C02992 /* ViewController.swift */, + 59AF50542280B80C00C02992 /* Assets.xcassets */, + ); + path = TesteiOS; + sourceTree = ""; + }; + 59AF50612280B80D00C02992 /* TesteiOSTests */ = { + isa = PBXGroup; + children = ( + 59AF50642280B80D00C02992 /* Info.plist */, + 59D070F82284939700AC9C62 /* FormTestCase.swift */, + 59D070FC228496DD00AC9C62 /* DetailTestCase.swift */, + ); + path = TesteiOSTests; + sourceTree = ""; + }; + 59AF506C2280B80D00C02992 /* TesteiOSUITests */ = { + isa = PBXGroup; + children = ( + 59AF506D2280B80D00C02992 /* TesteiOSUITests.swift */, + 59AF506F2280B80D00C02992 /* Info.plist */, + ); + path = TesteiOSUITests; + sourceTree = ""; + }; + 59AF507B2280BDEF00C02992 /* Resource */ = { + isa = PBXGroup; + children = ( + 59AF507D2280BE0900C02992 /* fonts */, + 59AF507C2280BDF700C02992 /* images */, + ); + path = Resource; + sourceTree = ""; + }; + 59AF507C2280BDF700C02992 /* images */ = { + isa = PBXGroup; + children = ( + 59AF50B72280E6BC00C02992 /* assets */, + ); + path = images; + sourceTree = ""; + }; + 59AF507D2280BE0900C02992 /* fonts */ = { + isa = PBXGroup; + children = ( + 59AF50A42280DEBC00C02992 /* Din */, + ); + path = fonts; + sourceTree = ""; + }; + 59AF507E2280BED200C02992 /* Application */ = { + isa = PBXGroup; + children = ( + 59AF50852280C04800C02992 /* Enums */, + 59AF50842280BF5200C02992 /* Xibs */, + 59AF50832280BF3900C02992 /* Storyboards */, + 59AF50822280BF2800C02992 /* Controllers */, + 59AF50812280BF1400C02992 /* Models */, + 59AF507F2280BEE800C02992 /* infrastructure */, + ); + path = Application; + sourceTree = ""; + }; + 59AF507F2280BEE800C02992 /* infrastructure */ = { + isa = PBXGroup; + children = ( + 59AF50E22281F05100C02992 /* Style */, + 59AF50802280BF0300C02992 /* extensions */, + 59AF50CD2281B1F300C02992 /* RouterAPI.swift */, + 59AF51082283110500C02992 /* Validator.swift */, + ); + path = infrastructure; + sourceTree = ""; + }; + 59AF50802280BF0300C02992 /* extensions */ = { + isa = PBXGroup; + children = ( + 59AF50E52281F0C100C02992 /* Extension+UIColor.swift */, + 59AF50E72281F42100C02992 /* Extension+UIImage.swift */, + 59AF50E92281F45400C02992 /* Extension.swift */, + 59AF510A2283112900C02992 /* Extension+String.swift */, + ); + path = extensions; + sourceTree = ""; + }; + 59AF50812280BF1400C02992 /* Models */ = { + isa = PBXGroup; + children = ( + 59AF508F2280CC1E00C02992 /* Details */, + 59AF508E2280CC1000C02992 /* Cells */, + ); + path = Models; + sourceTree = ""; + }; + 59AF50822280BF2800C02992 /* Controllers */ = { + isa = PBXGroup; + children = ( + 59AF50D72281CDC500C02992 /* Details */, + 59AF50CA2281B19C00C02992 /* Form */, + ); + path = Controllers; + sourceTree = ""; + }; + 59AF50832280BF3900C02992 /* Storyboards */ = { + isa = PBXGroup; + children = ( + 59AF50562280B80C00C02992 /* LaunchScreen.storyboard */, + 59AF50512280B80A00C02992 /* Main.storyboard */, + ); + path = Storyboards; + sourceTree = ""; + }; + 59AF50842280BF5200C02992 /* Xibs */ = { + isa = PBXGroup; + children = ( + 594147B4228387AB0009438F /* Details */, + 59AF50EB228208F500C02992 /* Form */, + ); + path = Xibs; + sourceTree = ""; + }; + 59AF50852280C04800C02992 /* Enums */ = { + isa = PBXGroup; + children = ( + 59AF50862280C0C700C02992 /* Type.swift */, + 59AF50882280C10900C02992 /* TypeField.swift */, + ); + path = Enums; + sourceTree = ""; + }; + 59AF508E2280CC1000C02992 /* Cells */ = { + isa = PBXGroup; + children = ( + 59AF508A2280C2DB00C02992 /* Cells.swift */, + 59AF508C2280C33200C02992 /* CellsList.swift */, + ); + path = Cells; + sourceTree = ""; + }; + 59AF508F2280CC1E00C02992 /* Details */ = { + isa = PBXGroup; + children = ( + 59AF50942280CC4300C02992 /* Months12.swift */, + 59AF50962280CC4300C02992 /* DownInfo.swift */, + 59AF50972280CC4300C02992 /* Info.swift */, + 59AF50932280CC4300C02992 /* MoreInfo.swift */, + 59AF50952280CC4300C02992 /* Screen.swift */, + 59AF50912280CC4300C02992 /* Year.swift */, + 59AF50A02280D93300C02992 /* Month.swift */, + 59AF50A22280DD5500C02992 /* BaseClass.swift */, + 594147B222837E2B0009438F /* SectionScreens.swift */, + ); + path = Details; + sourceTree = ""; + }; + 59AF50A42280DEBC00C02992 /* Din */ = { + isa = PBXGroup; + children = ( + 59AF50AA2280DEDD00C02992 /* DINEngschriftStd.otf */, + 59AF50AB2280DEDD00C02992 /* DINMittelschriftStd.otf */, + 59AF50A62280DEDD00C02992 /* DINNeuzeitGroteskStd-BdCond.otf */, + 59AF50AD2280DEDD00C02992 /* DINNeuzeitGroteskStd-Light.otf */, + 59AF50AC2280DEDD00C02992 /* DINPro-Black.otf */, + 59AF50A92280DEDD00C02992 /* DINPro-Bold.otf */, + 59AF50A72280DEDD00C02992 /* DINPro-Light.otf */, + 59AF50A52280DEDD00C02992 /* DINPro-Medium.otf */, + 59AF50A82280DEDD00C02992 /* DINPro-Regular.otf */, + ); + path = Din; + sourceTree = ""; + }; + 59AF50B72280E6BC00C02992 /* assets */ = { + isa = PBXGroup; + children = ( + 594148122283984A0009438F /* baixar.png */, + 594148132283984A0009438F /* baixar@2x.png */, + 59414811228398490009438F /* baixar@3x.png */, + 594147EF228390C30009438F /* selectedGreenRisk1.png */, + 594147EC228390C20009438F /* selectedGreenRisk1@2x.png */, + 594147EA228390C20009438F /* selectedGreenRisk1@3x.png */, + 594147E7228390C20009438F /* selectedGreenRisk2.png */, + 594147E8228390C20009438F /* selectedGreenRisk2@2x.png */, + 594147E9228390C20009438F /* selectedGreenRisk2@3x.png */, + 594147F4228390C30009438F /* selectedOrangeRisk3.png */, + 594147F5228390C30009438F /* selectedOrangeRisk3@2x.png */, + 594147F1228390C30009438F /* selectedOrangeRisk3@3x.png */, + 594147ED228390C20009438F /* selectedOrangeRisk4.png */, + 594147F2228390C30009438F /* selectedOrangeRisk4@2x.png */, + 594147F0228390C30009438F /* selectedOrangeRisk4@3x.png */, + 594147F3228390C30009438F /* selectedRedRisk5.png */, + 594147EB228390C20009438F /* selectedRedRisk5@2x.png */, + 594147EE228390C20009438F /* selectedRedRisk5@3x.png */, + 594147D422838E150009438F /* Risk1lightGreen.png */, + 594147D222838E150009438F /* Risk1lightGreen@2x.png */, + 594147D022838E150009438F /* Risk1lightGreen@3x.png */, + 594147CF22838E140009438F /* Risk2green.png */, + 594147CD22838E140009438F /* Risk2green@2x.png */, + 594147D322838E150009438F /* Risk2green@3x.png */, + 594147C822838E140009438F /* Risk3yellow.png */, + 594147CC22838E140009438F /* Risk3yellow@2x.png */, + 594147C722838E130009438F /* Risk3yellow@3x.png */, + 594147D122838E150009438F /* Risk4lightOrange.png */, + 594147CE22838E140009438F /* Risk4lightOrange@2x.png */, + 594147CB22838E140009438F /* Risk4lightOrange@3x.png */, + 594147C922838E140009438F /* Risk5Orange.png */, + 594147D522838E150009438F /* Risk5Orange@2x.png */, + 594147CA22838E140009438F /* Risk5Orange@3x.png */, + 594147BB2283886C0009438F /* Spearador.png */, + 594147BA2283886C0009438F /* Spearador@2x.png */, + 594147B92283886B0009438F /* Spearador@3x.png */, + 59AF50FD22821BB400C02992 /* checked.png */, + 59AF510122821BB500C02992 /* checked@2x.png */, + 59AF50FF22821BB500C02992 /* checked@3x.png */, + 59AF50FE22821BB500C02992 /* unchecked.png */, + 59AF510022821BB500C02992 /* unchecked@2x.png */, + 59AF50FC22821BB400C02992 /* unchecked@3x.png */, + 59AF50B82280E6D500C02992 /* arrowDown@1x.png */, + 59AF50BA2280E6D500C02992 /* arrowDown@2x.png */, + 59AF50BC2280E6D500C02992 /* arrowDown@3x.png */, + 59AF50C02280E6D600C02992 /* download@1x.png */, + 59AF50BB2280E6D500C02992 /* download@2x.png */, + 59AF50BF2280E6D600C02992 /* download@3x.png */, + 59AF50BD2280E6D500C02992 /* share@1x.png */, + 59AF50B92280E6D500C02992 /* share@2x.png */, + 59AF50BE2280E6D500C02992 /* share@3x.png */, + ); + path = assets; + sourceTree = ""; + }; + 59AF50CA2281B19C00C02992 /* Form */ = { + isa = PBXGroup; + children = ( + 59AF50CB2281B1B400C02992 /* FormProvider.swift */, + 59AF50CF2281C7B700C02992 /* FormInteractor.swift */, + 59AF50D12281C93300C02992 /* FormPresenter.swift */, + 59AF50D32281CA4B00C02992 /* FormWireframe.swift */, + 59AF50D52281CAAC00C02992 /* FormViewController.swift */, + 594147B02283709D0009438F /* FormSuccessViewController.swift */, + ); + path = Form; + sourceTree = ""; + }; + 59AF50D72281CDC500C02992 /* Details */ = { + isa = PBXGroup; + children = ( + 59AF50D82281CDD800C02992 /* DetailProvider.swift */, + 59AF50DA2281CEA600C02992 /* DetailInteractor.swift */, + 59AF50DC2281CFC100C02992 /* DetailPresenter.swift */, + 59AF50DE2281D03500C02992 /* DetailWireframe.swift */, + 59AF50E02281D08B00C02992 /* DetailViewController.swift */, + 5941481722839B500009438F /* DetailRouter.swift */, + ); + path = Details; + sourceTree = ""; + }; + 59AF50E22281F05100C02992 /* Style */ = { + isa = PBXGroup; + children = ( + 59AF50E32281F06400C02992 /* ButtonStyle.swift */, + ); + path = Style; + sourceTree = ""; + }; + 59AF50EB228208F500C02992 /* Form */ = { + isa = PBXGroup; + children = ( + 59AF50EC2282092B00C02992 /* TextFieldTableViewCell.swift */, + 59AF50ED2282092B00C02992 /* TextFieldTableViewCell.xib */, + 59AF50F02282179800C02992 /* BtnFormTableViewCell.swift */, + 59AF50F12282179800C02992 /* BtnFormTableViewCell.xib */, + 59AF50F4228219DB00C02992 /* TitleFormTableViewCell.swift */, + 59AF50F5228219DB00C02992 /* TitleFormTableViewCell.xib */, + 59AF50F822821A9400C02992 /* CheckFormTableViewCell.swift */, + 59AF50F922821A9400C02992 /* CheckFormTableViewCell.xib */, + ); + path = Form; + sourceTree = ""; + }; + 758CEC463CE4888420C497EC /* Pods */ = { + isa = PBXGroup; + children = ( + B9B466CC0B4064B91AB056B1 /* Pods-TesteiOS.debug.xcconfig */, + 833F093BD3C8C316527AE625 /* Pods-TesteiOS.release.xcconfig */, + 4541E9174580859F457DA9CD /* Pods-TesteiOSTests.debug.xcconfig */, + 6E5F438C309A40F9E533086D /* Pods-TesteiOSTests.release.xcconfig */, + 3EC76BA55875FB43F8B305FC /* Pods-TesteiOSUITests.debug.xcconfig */, + D46F35669A013E736BAB1A19 /* Pods-TesteiOSUITests.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 59AF50492280B80A00C02992 /* TesteiOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 59AF50722280B80D00C02992 /* Build configuration list for PBXNativeTarget "TesteiOS" */; + buildPhases = ( + 2C700B134A69966C987FFB41 /* [CP] Check Pods Manifest.lock */, + 59AF50462280B80A00C02992 /* Sources */, + 59AF50472280B80A00C02992 /* Frameworks */, + 59AF50482280B80A00C02992 /* Resources */, + B9BDE5B3AC11A4F0780B834F /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = TesteiOS; + productName = TesteiOS; + productReference = 59AF504A2280B80A00C02992 /* TesteiOS.app */; + productType = "com.apple.product-type.application"; + }; + 59AF505D2280B80D00C02992 /* TesteiOSTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 59AF50752280B80D00C02992 /* Build configuration list for PBXNativeTarget "TesteiOSTests" */; + buildPhases = ( + 4499BC0053830881F2EDB00C /* [CP] Check Pods Manifest.lock */, + 59AF505A2280B80D00C02992 /* Sources */, + 59AF505B2280B80D00C02992 /* Frameworks */, + 59AF505C2280B80D00C02992 /* Resources */, + AE301FB8CF0AC751926DB7F9 /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 59AF50602280B80D00C02992 /* PBXTargetDependency */, + ); + name = TesteiOSTests; + productName = TesteiOSTests; + productReference = 59AF505E2280B80D00C02992 /* TesteiOSTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 59AF50682280B80D00C02992 /* TesteiOSUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 59AF50782280B80D00C02992 /* Build configuration list for PBXNativeTarget "TesteiOSUITests" */; + buildPhases = ( + AF9FE0CD007960F02CE8D1D0 /* [CP] Check Pods Manifest.lock */, + 59AF50652280B80D00C02992 /* Sources */, + 59AF50662280B80D00C02992 /* Frameworks */, + 59AF50672280B80D00C02992 /* Resources */, + FCB7360023AF2241D4505A6C /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 59AF506B2280B80D00C02992 /* PBXTargetDependency */, + ); + name = TesteiOSUITests; + productName = TesteiOSUITests; + productReference = 59AF50692280B80D00C02992 /* TesteiOSUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 59AF50422280B80A00C02992 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1020; + LastUpgradeCheck = 1020; + ORGANIZATIONNAME = anderson.jesus.silva; + TargetAttributes = { + 59AF50492280B80A00C02992 = { + CreatedOnToolsVersion = 10.2.1; + }; + 59AF505D2280B80D00C02992 = { + CreatedOnToolsVersion = 10.2.1; + TestTargetID = 59AF50492280B80A00C02992; + }; + 59AF50682280B80D00C02992 = { + CreatedOnToolsVersion = 10.2.1; + TestTargetID = 59AF50492280B80A00C02992; + }; + }; + }; + buildConfigurationList = 59AF50452280B80A00C02992 /* Build configuration list for PBXProject "TesteiOS" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 59AF50412280B80A00C02992; + productRefGroup = 59AF504B2280B80A00C02992 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 59AF50492280B80A00C02992 /* TesteiOS */, + 59AF505D2280B80D00C02992 /* TesteiOSTests */, + 59AF50682280B80D00C02992 /* TesteiOSUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 59AF50482280B80A00C02992 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 59AF510722821BB500C02992 /* checked@2x.png in Resources */, + 59AF50B22280DEDD00C02992 /* DINPro-Bold.otf in Resources */, + 594148142283984A0009438F /* baixar@3x.png in Resources */, + 59AF50582280B80C00C02992 /* LaunchScreen.storyboard in Resources */, + 59AF50552280B80C00C02992 /* Assets.xcassets in Resources */, + 5941480C228396C40009438F /* InfoTableViewCell.xib in Resources */, + 59AF50EF2282092B00C02992 /* TextFieldTableViewCell.xib in Resources */, + 594147C622838D8F0009438F /* RiskTableViewCell.xib in Resources */, + 594147DC22838E160009438F /* Risk2green@2x.png in Resources */, + 59AF50B32280DEDD00C02992 /* DINEngschriftStd.otf in Resources */, + 59AF50C42280E6D600C02992 /* download@2x.png in Resources */, + 594147DA22838E160009438F /* Risk4lightOrange@3x.png in Resources */, + 59AF510422821BB500C02992 /* unchecked.png in Resources */, + 594147FD228390C30009438F /* selectedRedRisk5@3x.png in Resources */, + 594147DE22838E160009438F /* Risk2green.png in Resources */, + 59AF50C12280E6D600C02992 /* arrowDown@1x.png in Resources */, + 594147C222838C840009438F /* AboutTableViewCell.xib in Resources */, + 59AF50FB22821A9400C02992 /* CheckFormTableViewCell.xib in Resources */, + 594147DD22838E160009438F /* Risk4lightOrange@2x.png in Resources */, + 594147BC2283886C0009438F /* Spearador@3x.png in Resources */, + 594148152283984A0009438F /* baixar.png in Resources */, + 59414804228390C30009438F /* selectedOrangeRisk3@2x.png in Resources */, + 59AF50C72280E6D600C02992 /* share@3x.png in Resources */, + 594147F8228390C30009438F /* selectedGreenRisk2@3x.png in Resources */, + 59414802228390C30009438F /* selectedRedRisk5.png in Resources */, + 594147F6228390C30009438F /* selectedGreenRisk2.png in Resources */, + 59AF50C52280E6D600C02992 /* arrowDown@3x.png in Resources */, + 594147DB22838E160009438F /* Risk3yellow@2x.png in Resources */, + 59AF510222821BB500C02992 /* unchecked@3x.png in Resources */, + 59AF50B42280DEDD00C02992 /* DINMittelschriftStd.otf in Resources */, + 59414800228390C30009438F /* selectedOrangeRisk3@3x.png in Resources */, + 59414808228394160009438F /* MoreInfoTableViewCell.xib in Resources */, + 59414803228390C30009438F /* selectedOrangeRisk3.png in Resources */, + 594147F7228390C30009438F /* selectedGreenRisk2@2x.png in Resources */, + 59AF50B02280DEDD00C02992 /* DINPro-Light.otf in Resources */, + 59AF50AE2280DEDD00C02992 /* DINPro-Medium.otf in Resources */, + 594147E022838E160009438F /* Risk4lightOrange.png in Resources */, + 59AF50532280B80A00C02992 /* Main.storyboard in Resources */, + 594147FA228390C30009438F /* selectedRedRisk5@2x.png in Resources */, + 594147DF22838E160009438F /* Risk1lightGreen@3x.png in Resources */, + 594147D822838E160009438F /* Risk5Orange.png in Resources */, + 59AF50C62280E6D600C02992 /* share@1x.png in Resources */, + 594147E422838E160009438F /* Risk5Orange@2x.png in Resources */, + 59AF50C82280E6D600C02992 /* download@3x.png in Resources */, + 59AF50F32282179800C02992 /* BtnFormTableViewCell.xib in Resources */, + 59AF50B52280DEDD00C02992 /* DINPro-Black.otf in Resources */, + 59AF50B12280DEDD00C02992 /* DINPro-Regular.otf in Resources */, + 59414810228397E50009438F /* DownInfoTableViewCell.xib in Resources */, + 594147FC228390C30009438F /* selectedOrangeRisk4.png in Resources */, + 59414801228390C30009438F /* selectedOrangeRisk4@2x.png in Resources */, + 594147D922838E160009438F /* Risk5Orange@3x.png in Resources */, + 59AF50C32280E6D600C02992 /* arrowDown@2x.png in Resources */, + 594147D622838E160009438F /* Risk3yellow@3x.png in Resources */, + 594147D722838E160009438F /* Risk3yellow.png in Resources */, + 594147FB228390C30009438F /* selectedGreenRisk1@2x.png in Resources */, + 59AF50AF2280DEDD00C02992 /* DINNeuzeitGroteskStd-BdCond.otf in Resources */, + 594147FF228390C30009438F /* selectedOrangeRisk4@3x.png in Resources */, + 59AF50F7228219DB00C02992 /* TitleFormTableViewCell.xib in Resources */, + 594147E322838E160009438F /* Risk1lightGreen.png in Resources */, + 594147BD2283886C0009438F /* Spearador@2x.png in Resources */, + 59AF50C22280E6D600C02992 /* share@2x.png in Resources */, + 59AF510322821BB500C02992 /* checked.png in Resources */, + 594147B8228387DA0009438F /* FundNameTableViewCell.xib in Resources */, + 59AF50C92280E6D600C02992 /* download@1x.png in Resources */, + 594147E122838E160009438F /* Risk1lightGreen@2x.png in Resources */, + 594147BE2283886C0009438F /* Spearador.png in Resources */, + 594147F9228390C30009438F /* selectedGreenRisk1@3x.png in Resources */, + 59AF510622821BB500C02992 /* unchecked@2x.png in Resources */, + 594148162283984A0009438F /* baixar@2x.png in Resources */, + 594147E222838E160009438F /* Risk2green@3x.png in Resources */, + 594147FE228390C30009438F /* selectedGreenRisk1.png in Resources */, + 59AF50B62280DEDD00C02992 /* DINNeuzeitGroteskStd-Light.otf in Resources */, + 59AF510522821BB500C02992 /* checked@3x.png in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 59AF505C2280B80D00C02992 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 59AF50672280B80D00C02992 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 2C700B134A69966C987FFB41 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-TesteiOS-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 4499BC0053830881F2EDB00C /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-TesteiOSTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + AE301FB8CF0AC751926DB7F9 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-TesteiOSTests/Pods-TesteiOSTests-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework", + "${BUILT_PRODUCTS_DIR}/AlamofireObjectMapper/AlamofireObjectMapper.framework", + "${BUILT_PRODUCTS_DIR}/ObjectMapper/ObjectMapper.framework", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + ); + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Alamofire.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AlamofireObjectMapper.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ObjectMapper.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-TesteiOSTests/Pods-TesteiOSTests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + AF9FE0CD007960F02CE8D1D0 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-TesteiOSUITests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + B9BDE5B3AC11A4F0780B834F /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-TesteiOS/Pods-TesteiOS-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework", + "${BUILT_PRODUCTS_DIR}/AlamofireObjectMapper/AlamofireObjectMapper.framework", + "${BUILT_PRODUCTS_DIR}/KeychainSwift/KeychainSwift.framework", + "${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework", + "${BUILT_PRODUCTS_DIR}/MDFInternationalization/MDFInternationalization.framework", + "${BUILT_PRODUCTS_DIR}/MDFTextAccessibility/MDFTextAccessibility.framework", + "${BUILT_PRODUCTS_DIR}/MaterialComponents/MaterialComponents.framework", + "${BUILT_PRODUCTS_DIR}/MotionAnimator/MotionAnimator.framework", + "${BUILT_PRODUCTS_DIR}/MotionInterchange/MotionInterchange.framework", + "${BUILT_PRODUCTS_DIR}/MotionTransitioning/MotionTransitioning.framework", + "${BUILT_PRODUCTS_DIR}/ObjectMapper/ObjectMapper.framework", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + ); + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Alamofire.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AlamofireObjectMapper.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/KeychainSwift.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MBProgressHUD.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MDFInternationalization.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MDFTextAccessibility.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MaterialComponents.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MotionAnimator.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MotionInterchange.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MotionTransitioning.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ObjectMapper.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-TesteiOS/Pods-TesteiOS-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + FCB7360023AF2241D4505A6C /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-TesteiOSUITests/Pods-TesteiOSUITests-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework", + "${BUILT_PRODUCTS_DIR}/AlamofireObjectMapper/AlamofireObjectMapper.framework", + "${BUILT_PRODUCTS_DIR}/ObjectMapper/ObjectMapper.framework", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + ); + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Alamofire.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AlamofireObjectMapper.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ObjectMapper.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-TesteiOSUITests/Pods-TesteiOSUITests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 59AF50462280B80A00C02992 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 59AF509E2280CC4300C02992 /* DownInfo.swift in Sources */, + 5941481822839B500009438F /* DetailRouter.swift in Sources */, + 594147B322837E2B0009438F /* SectionScreens.swift in Sources */, + 59AF50DB2281CEA600C02992 /* DetailInteractor.swift in Sources */, + 59414807228394160009438F /* MoreInfoTableViewCell.swift in Sources */, + 59AF50E12281D08B00C02992 /* DetailViewController.swift in Sources */, + 59AF50892280C10900C02992 /* TypeField.swift in Sources */, + 59AF50502280B80A00C02992 /* ViewController.swift in Sources */, + 59AF504E2280B80A00C02992 /* AppDelegate.swift in Sources */, + 594147B7228387DA0009438F /* FundNameTableViewCell.swift in Sources */, + 59AF508D2280C33200C02992 /* CellsList.swift in Sources */, + 594147C122838C840009438F /* AboutTableViewCell.swift in Sources */, + 59AF50E82281F42100C02992 /* Extension+UIImage.swift in Sources */, + 59AF50CE2281B1F300C02992 /* RouterAPI.swift in Sources */, + 59AF50EE2282092B00C02992 /* TextFieldTableViewCell.swift in Sources */, + 59AF50872280C0C700C02992 /* Type.swift in Sources */, + 594147C522838D8F0009438F /* RiskTableViewCell.swift in Sources */, + 59AF50D42281CA4B00C02992 /* FormWireframe.swift in Sources */, + 59AF51092283110600C02992 /* Validator.swift in Sources */, + 59AF509C2280CC4300C02992 /* Months12.swift in Sources */, + 59AF50D22281C93300C02992 /* FormPresenter.swift in Sources */, + 59AF510B2283112900C02992 /* Extension+String.swift in Sources */, + 59AF50CC2281B1B400C02992 /* FormProvider.swift in Sources */, + 59AF50E42281F06400C02992 /* ButtonStyle.swift in Sources */, + 59AF50F6228219DB00C02992 /* TitleFormTableViewCell.swift in Sources */, + 59AF509B2280CC4300C02992 /* MoreInfo.swift in Sources */, + 59AF50D92281CDD800C02992 /* DetailProvider.swift in Sources */, + 59AF50992280CC4300C02992 /* Year.swift in Sources */, + 594147B12283709D0009438F /* FormSuccessViewController.swift in Sources */, + 59AF50D02281C7B700C02992 /* FormInteractor.swift in Sources */, + 59AF50DD2281CFC100C02992 /* DetailPresenter.swift in Sources */, + 59AF508B2280C2DB00C02992 /* Cells.swift in Sources */, + 59AF50E62281F0C100C02992 /* Extension+UIColor.swift in Sources */, + 59AF509D2280CC4300C02992 /* Screen.swift in Sources */, + 59AF50A32280DD5500C02992 /* BaseClass.swift in Sources */, + 59AF50F22282179800C02992 /* BtnFormTableViewCell.swift in Sources */, + 5941480F228397E50009438F /* DownInfoTableViewCell.swift in Sources */, + 59AF509F2280CC4300C02992 /* Info.swift in Sources */, + 59AF50DF2281D03500C02992 /* DetailWireframe.swift in Sources */, + 59AF50FA22821A9400C02992 /* CheckFormTableViewCell.swift in Sources */, + 59AF50D62281CAAC00C02992 /* FormViewController.swift in Sources */, + 5941480B228396C40009438F /* InfoTableViewCell.swift in Sources */, + 59AF50EA2281F45400C02992 /* Extension.swift in Sources */, + 59AF50A12280D93300C02992 /* Month.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 59AF505A2280B80D00C02992 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 59D070F92284939700AC9C62 /* FormTestCase.swift in Sources */, + 59D070FA2284946500AC9C62 /* CellsList.swift in Sources */, + 59D070FF2284974100AC9C62 /* Months12.swift in Sources */, + 59D071012284974100AC9C62 /* Info.swift in Sources */, + 59D071032284974100AC9C62 /* Screen.swift in Sources */, + 59D071082284983C00AC9C62 /* RouterAPI.swift in Sources */, + 59D070FD228496DD00AC9C62 /* DetailTestCase.swift in Sources */, + 59D070FE228496F500AC9C62 /* DetailProvider.swift in Sources */, + 59D071022284974100AC9C62 /* MoreInfo.swift in Sources */, + 59D071002284974100AC9C62 /* DownInfo.swift in Sources */, + 59D070F72284936200AC9C62 /* FormProvider.swift in Sources */, + 59D071042284974100AC9C62 /* Year.swift in Sources */, + 59D071062284974100AC9C62 /* BaseClass.swift in Sources */, + 59D070FB2284946900AC9C62 /* Cells.swift in Sources */, + 59D071052284974100AC9C62 /* Month.swift in Sources */, + 59D071072284974100AC9C62 /* SectionScreens.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 59AF50652280B80D00C02992 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 59AF506E2280B80D00C02992 /* TesteiOSUITests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 59AF50602280B80D00C02992 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 59AF50492280B80A00C02992 /* TesteiOS */; + targetProxy = 59AF505F2280B80D00C02992 /* PBXContainerItemProxy */; + }; + 59AF506B2280B80D00C02992 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 59AF50492280B80A00C02992 /* TesteiOS */; + targetProxy = 59AF506A2280B80D00C02992 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 59AF50512280B80A00C02992 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 59AF50522280B80A00C02992 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 59AF50562280B80C00C02992 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 59AF50572280B80C00C02992 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 59AF50702280B80D00C02992 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.2; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 59AF50712280B80D00C02992 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.2; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 59AF50732280B80D00C02992 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B9B466CC0B4064B91AB056B1 /* Pods-TesteiOS.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = Q455L4V7AE; + INFOPLIST_FILE = TesteiOS/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.accenture.TesteiOS; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 59AF50742280B80D00C02992 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 833F093BD3C8C316527AE625 /* Pods-TesteiOS.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = Q455L4V7AE; + INFOPLIST_FILE = TesteiOS/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.accenture.TesteiOS; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + 59AF50762280B80D00C02992 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 4541E9174580859F457DA9CD /* Pods-TesteiOSTests.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = Q455L4V7AE; + INFOPLIST_FILE = TesteiOSTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.accenture.TesteiOSTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TesteiOS.app/TesteiOS"; + }; + name = Debug; + }; + 59AF50772280B80D00C02992 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 6E5F438C309A40F9E533086D /* Pods-TesteiOSTests.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = Q455L4V7AE; + INFOPLIST_FILE = TesteiOSTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.accenture.TesteiOSTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TesteiOS.app/TesteiOS"; + }; + name = Release; + }; + 59AF50792280B80D00C02992 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3EC76BA55875FB43F8B305FC /* Pods-TesteiOSUITests.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = Q455L4V7AE; + INFOPLIST_FILE = TesteiOSUITests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.accenture.TesteiOSUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = TesteiOS; + }; + name = Debug; + }; + 59AF507A2280B80D00C02992 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D46F35669A013E736BAB1A19 /* Pods-TesteiOSUITests.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = Q455L4V7AE; + INFOPLIST_FILE = TesteiOSUITests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.accenture.TesteiOSUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = TesteiOS; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 59AF50452280B80A00C02992 /* Build configuration list for PBXProject "TesteiOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 59AF50702280B80D00C02992 /* Debug */, + 59AF50712280B80D00C02992 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 59AF50722280B80D00C02992 /* Build configuration list for PBXNativeTarget "TesteiOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 59AF50732280B80D00C02992 /* Debug */, + 59AF50742280B80D00C02992 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 59AF50752280B80D00C02992 /* Build configuration list for PBXNativeTarget "TesteiOSTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 59AF50762280B80D00C02992 /* Debug */, + 59AF50772280B80D00C02992 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 59AF50782280B80D00C02992 /* Build configuration list for PBXNativeTarget "TesteiOSUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 59AF50792280B80D00C02992 /* Debug */, + 59AF507A2280B80D00C02992 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 59AF50422280B80A00C02992 /* Project object */; +} diff --git a/TesteiOS/TesteiOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/TesteiOS/TesteiOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..313ba99d --- /dev/null +++ b/TesteiOS/TesteiOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/TesteiOS/TesteiOS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/TesteiOS/TesteiOS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/TesteiOS/TesteiOS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/TesteiOS/TesteiOS.xcodeproj/project.xcworkspace/xcuserdata/anderson.jesus.silva.xcuserdatad/UserInterfaceState.xcuserstate b/TesteiOS/TesteiOS.xcodeproj/project.xcworkspace/xcuserdata/anderson.jesus.silva.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 00000000..984a1bff Binary files /dev/null and b/TesteiOS/TesteiOS.xcodeproj/project.xcworkspace/xcuserdata/anderson.jesus.silva.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/TesteiOS/TesteiOS.xcodeproj/xcuserdata/anderson.jesus.silva.xcuserdatad/xcschemes/xcschememanagement.plist b/TesteiOS/TesteiOS.xcodeproj/xcuserdata/anderson.jesus.silva.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 00000000..6b125098 --- /dev/null +++ b/TesteiOS/TesteiOS.xcodeproj/xcuserdata/anderson.jesus.silva.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,19 @@ + + + + + SchemeUserState + + TesteiOS.xcscheme + + orderHint + 24 + + TesteiOS.xcscheme_^#shared#^_ + + orderHint + 25 + + + + diff --git a/TesteiOS/TesteiOS/AppDelegate.swift b/TesteiOS/TesteiOS/AppDelegate.swift new file mode 100644 index 00000000..0679d784 --- /dev/null +++ b/TesteiOS/TesteiOS/AppDelegate.swift @@ -0,0 +1,46 @@ +// +// AppDelegate.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 06/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + var window: UIWindow? + + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + return true + } + + func applicationWillResignActive(_ application: UIApplication) { + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. + } + + func applicationDidEnterBackground(_ application: UIApplication) { + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. + } + + func applicationWillEnterForeground(_ application: UIApplication) { + // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. + } + + func applicationDidBecomeActive(_ application: UIApplication) { + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. + } + + func applicationWillTerminate(_ application: UIApplication) { + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. + } + + +} + diff --git a/TesteiOS/TesteiOS/Application/Controllers/Details/DetailInteractor.swift b/TesteiOS/TesteiOS/Application/Controllers/Details/DetailInteractor.swift new file mode 100644 index 00000000..25a52916 --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Controllers/Details/DetailInteractor.swift @@ -0,0 +1,92 @@ +// +// DetailInteractor.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 07/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import Foundation + +protocol DetailInteractorInput: class { + func loadDetail() +} + +protocol DetailInteractorOutput: class { + func resultDetail(sectionScreen:[SectionScreens]) + func failure(msg:String) +} + +class DetailInteractor: NSObject, DetailInteractorInput { + + private(set) var presenter : DetailPresenter + private(set) var wireframe : DetailWireframe + + weak var presentOutput: DetailInteractorOutput? + + init(presenter:DetailPresenter, wireframe:DetailWireframe) { + self.presenter = presenter + self.wireframe = wireframe + } + + private lazy var provider : DetailProvider = { + return DetailProvider.init() + }() + + //MARK: DetailInteractorInput + func loadDetail() { + self.provider.getDetails { (baseClass, error) in + guard error == nil else { + self.presentOutput?.failure(msg: error!.localizedDescription) + return + } + + if let baseClass = baseClass, let screen = baseClass.screen { + + var sectionScreens:[SectionScreens] = [SectionScreens]() + var nameFund:FundName? + var what:WhatIs? + var riskScreen:RiskScreen? + var moreInfo:MoreInformation? + + //FUND NAME + if let title = screen.title, let fundName = screen.fundName { + nameFund = FundName(title: title, name: fundName) + sectionScreens.append(SectionScreens(fundName: nameFund!, whatId: nil, riskScreen: nil, moreInformation: nil, info: nil, downInfo: nil, rows: 1)) + } + + //WHAT IS + if let whatIs = screen.whatIs, let definition = screen.definition { + what = WhatIs(title: whatIs, definition: definition) + sectionScreens.append(SectionScreens(fundName: nil, whatId: what!, riskScreen: nil, moreInformation: nil, info: nil, downInfo: nil, rows: 1)) + } + + //RISK SCREEN + if let titleRisk = screen.riskTitle, let risk = screen.risk { + riskScreen = RiskScreen(title: titleRisk, risk: risk) + sectionScreens.append(SectionScreens(fundName: nil, whatId: nil, riskScreen: riskScreen, moreInformation: nil, info: nil, downInfo: nil, rows: 1)) + } + + //MORE INFORMATION + if let titleMore = screen.infoTitle, let infoM = screen.moreInfo { + moreInfo = MoreInformation(title: titleMore, more: infoM) + sectionScreens.append(SectionScreens(fundName: nil, whatId: nil, riskScreen: nil, moreInformation: moreInfo, info: nil, downInfo: nil, rows: 1)) + } + + //INFO + if let info = screen.info { + sectionScreens.append(SectionScreens(fundName: nil, whatId: nil, riskScreen: nil, moreInformation: nil, info: info, downInfo: nil, rows: info.count)) + } + + //DOWNINFO + if let downInfo = screen.downInfo { + sectionScreens.append(SectionScreens(fundName: nil, whatId: nil, riskScreen: nil, moreInformation: nil, info: nil, downInfo: downInfo, rows: downInfo.count)) + } + + + self.presentOutput?.resultDetail(sectionScreen: sectionScreens) + } + } + } + +} diff --git a/TesteiOS/TesteiOS/Application/Controllers/Details/DetailPresenter.swift b/TesteiOS/TesteiOS/Application/Controllers/Details/DetailPresenter.swift new file mode 100644 index 00000000..b2da5f97 --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Controllers/Details/DetailPresenter.swift @@ -0,0 +1,29 @@ +// +// DetailPresenter.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 07/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import Foundation + +protocol DetailPresenterProtocol: class { + func loadDetail(sectionScreen:[SectionScreens]) + func failureView(msg:String) +} + +class DetailPresenter: NSObject, DetailInteractorOutput { + + weak var output: DetailPresenterProtocol? + + //MARK: DetailInteractorOutput + func resultDetail(sectionScreen:[SectionScreens]) { + self.output?.loadDetail(sectionScreen: sectionScreen) + } + + func failure(msg:String) { + self.output?.failureView(msg: msg) + } + +} diff --git a/TesteiOS/TesteiOS/Application/Controllers/Details/DetailProvider.swift b/TesteiOS/TesteiOS/Application/Controllers/Details/DetailProvider.swift new file mode 100644 index 00000000..4a6aa424 --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Controllers/Details/DetailProvider.swift @@ -0,0 +1,29 @@ +// +// DetailProvider.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 07/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import Foundation +import Alamofire +import AlamofireObjectMapper +import ObjectMapper + +class DetailProvider: NSObject { + + func getDetails(completion:@escaping(_ detailBase:BaseClass?, _ error:Error?) -> Void) -> Void { + + request(RouterAPI.detail) + .validate(statusCode: 200..<300) + .responseObject { (response:DataResponse) in + switch response.result { + case .success(let base): completion(base, nil); break; + case .failure(let error): completion(nil, error); break; + } + } + + } + +} diff --git a/TesteiOS/TesteiOS/Application/Controllers/Details/DetailRouter.swift b/TesteiOS/TesteiOS/Application/Controllers/Details/DetailRouter.swift new file mode 100644 index 00000000..53d34f2b --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Controllers/Details/DetailRouter.swift @@ -0,0 +1,37 @@ +// +// DetailRouter.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 08/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import UIKit +import SafariServices + +protocol DetailRouterProtocol:class { + func routerToSafari() +} + +class DetailRouter:DetailRouterProtocol { + + var VC:DetailViewController! + + func routerToSafari() { + + if let url = URL(string: "https://www.google.com") { + if #available(iOS 11.0, *) { + let config = SFSafariViewController.Configuration() + config.entersReaderIfAvailable = true + + let view = SFSafariViewController(url: url, configuration: config) + self.VC.present(view, animated: true, completion: nil) + }else if #available(iOS 10.0, *){ + UIApplication.shared.open(url, options: [:], completionHandler: nil) + }else{ + UIApplication.shared.openURL(url) + } + } + } + +} diff --git a/TesteiOS/TesteiOS/Application/Controllers/Details/DetailViewController.swift b/TesteiOS/TesteiOS/Application/Controllers/Details/DetailViewController.swift new file mode 100644 index 00000000..ed5bc509 --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Controllers/Details/DetailViewController.swift @@ -0,0 +1,153 @@ +// +// DetailViewController.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 07/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import UIKit + +class DetailViewController: UIViewController { + + var interactor: DetailInteractorInput! + var router: DetailRouterProtocol! + var sectionScreens:[SectionScreens]? + + @IBOutlet weak var tbView: UITableView! + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + DetailWireframe.configurate(viewcontroller: self) + self.showLoading() + self.interactor.loadDetail() + } + + @IBAction func btnInvestTapped(_ sender: ButtonStyle) { + } + + @IBAction func btnFormTapped(_ sender: ButtonStyle) { + performSegue(withIdentifier: "sgForm", sender: nil) + } + + private func loadXib() { + FundNameTableViewCell.register(to: self.tbView) + AboutTableViewCell.register(to: self.tbView) + RiskTableViewCell.register(to: self.tbView) + MoreInfoTableViewCell.register(to: self.tbView) + InfoTableViewCell.register(to: self.tbView) + DownInfoTableViewCell.register(to: self.tbView) + + self.tbView.delegate = self + self.tbView.dataSource = self + self.tbView.reloadData() + } + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} +extension DetailViewController: DetailPresenterProtocol { + + func loadDetail(sectionScreen:[SectionScreens]) { + self.sectionScreens = sectionScreen + self.loadXib() + self.hideLoading() + } + + func failureView(msg:String) { + self.alertMesage(title: "Teste", msg: msg, btn: "OK") + self.hideLoading() + } + +} + +extension DetailViewController: UITableViewDelegate, UITableViewDataSource { + + func numberOfSections(in tableView: UITableView) -> Int { + return self.sectionScreens!.count + } + + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + if let screenSection = self.sectionScreens { + return screenSection[section].rows + } + return 1 + } + + func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { + return UITableView.automaticDimension + } + + func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { + return UITableView.automaticDimension + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + + if let screenSection = self.sectionScreens { + + switch indexPath.section { + case 0 : + if let fundName = screenSection[0].fundName { + let cell = self.tbView.dequeueReusableCell(withIdentifier: "FundNameTableViewCell", for: indexPath) as! FundNameTableViewCell + cell.setup(fund: fundName) + return cell + } + case 1: + if let about = screenSection[1].whatId { + let cell = self.tbView.dequeueReusableCell(withIdentifier: "AboutTableViewCell", for: indexPath) as! AboutTableViewCell + cell.setup(about: about) + return cell + } + case 2: + if let risk = screenSection[2].riskScreen { + let cell = self.tbView.dequeueReusableCell(withIdentifier: "RiskTableViewCell", for: indexPath) as! RiskTableViewCell + cell.setup(riskObj: risk) + return cell + } + case 3: + if let moreInfo = screenSection[3].moreInformation { + let cell = self.tbView.dequeueReusableCell(withIdentifier: "MoreInfoTableViewCell", for: indexPath) as! MoreInfoTableViewCell + cell.setup(obj: moreInfo) + return cell + } + case 4: + if let objInfo = screenSection[4].info { + let cell = self.tbView.dequeueReusableCell(withIdentifier: "InfoTableViewCell", for: indexPath) as! InfoTableViewCell + cell.setup(obj: objInfo[indexPath.row]) + return cell + } + case 5: + if let downInfo = screenSection[5].downInfo { + let cell = self.tbView.dequeueReusableCell(withIdentifier: "DownInfoTableViewCell", for: indexPath) as! DownInfoTableViewCell + cell.delegate = self + cell.setup(obj: downInfo[indexPath.row]) + return cell + } + default: + return UITableViewCell() + } + + } + + return UITableViewCell() + } + +} + +extension DetailViewController: DownInfoTableViewCellDelegate { + + func openSafari() { + self.router.routerToSafari() + } + +} diff --git a/TesteiOS/TesteiOS/Application/Controllers/Details/DetailWireframe.swift b/TesteiOS/TesteiOS/Application/Controllers/Details/DetailWireframe.swift new file mode 100644 index 00000000..aa188343 --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Controllers/Details/DetailWireframe.swift @@ -0,0 +1,30 @@ +// +// DetailWireframe.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 07/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import Foundation + +class DetailWireframe { + + var interactor:DetailInteractor? + var router:DetailRouter? + + static func configurate(viewcontroller:DetailViewController) { + + let presenter = DetailPresenter() + let wireframe = DetailWireframe() + let interactor = DetailInteractor(presenter: presenter, wireframe: wireframe) + let router = DetailRouter() + + viewcontroller.interactor = interactor + viewcontroller.router = router + interactor.presentOutput = presenter + presenter.output = viewcontroller + router.VC = viewcontroller + + } +} diff --git a/TesteiOS/TesteiOS/Application/Controllers/Form/FormInteractor.swift b/TesteiOS/TesteiOS/Application/Controllers/Form/FormInteractor.swift new file mode 100644 index 00000000..08bd3c4e --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Controllers/Form/FormInteractor.swift @@ -0,0 +1,99 @@ +// +// FormInteractor.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 07/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import Foundation + +protocol FormInteractorInput: class { + func loadForm() + func validateFields(arr:[ValidateValues]) +} + +protocol FormInteractorOutput: class { + func resultForm(cellList:[CellList]) + func failure(msg:String) + func validateSuccess() +} + +class FormInteracor: NSObject, FormInteractorInput { + + private(set) var presenter : FormPresenter + private(set) var wireframe : FormWireframe + + weak var presentOutput: FormInteractorOutput? + + init(presenter:FormPresenter, wireframe:FormWireframe) { + self.presenter = presenter + self.wireframe = wireframe + } + + private lazy var provider : FormProvider = { + return FormProvider.init() + }() + + //MARK: FormInteractorInput + func loadForm() { + self.provider.getCellForm { (cell, error) in + guard error == nil else { + self.presentOutput?.failure(msg: error!.localizedDescription) + return + } + + if let cell = cell, let listCell = cell.cellsList { + self.presentOutput?.resultForm(cellList: listCell) + } + + } + } + + func validateFields(arr:[ValidateValues]) { + + let arrEmail = arr.filter({ $0.type == TypeField.email }) + if arrEmail.count > 0 { + let validator = Validator(typefield: TypeField(rawValue: (arrEmail.last?.type.hashValue)!)) + + if !validator.validateEmail(email: arrEmail.last!.value) { + self.presentOutput?.failure(msg: "Campo e-mail incorreto!") + return + } + }else{ + self.presentOutput?.failure(msg: "Por favor preencha o campo e-mail.") + return + } + + let arrPhone = arr.filter({ $0.type == TypeField.telNumber }) + if arrPhone.count > 0 { + + let validator = Validator(typefield: arrPhone.last!.type) + if !validator.validatePhone(phone: arrPhone.last!.value) { + self.presentOutput?.failure(msg: "Campo Telefone incorreto!") + return + } + + }else{ + self.presentOutput?.failure(msg: "Por favor preencha o campo Telefone.") + return + } + + + let arrText = arr.filter({ $0.type == TypeField.text }) + if arrText.count > 0 { + let validator = Validator(typefield: arrText.last!.type) + if !validator.validate(arrText.last!.value) { + self.presentOutput?.failure(msg: "Campo Nome incorreto!.") + return + } + }else{ + self.presentOutput?.failure(msg: "Por favor preencha o campo Nome.") + return + } + + self.presentOutput?.validateSuccess() + + } + +} diff --git a/TesteiOS/TesteiOS/Application/Controllers/Form/FormPresenter.swift b/TesteiOS/TesteiOS/Application/Controllers/Form/FormPresenter.swift new file mode 100644 index 00000000..4005b67e --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Controllers/Form/FormPresenter.swift @@ -0,0 +1,34 @@ +// +// FormPresenter.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 07/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import Foundation + +protocol FormPresenterProtocol: class { + func loadForm(listCell:[CellList]) + func failureView(msg:String) + func successValidate() +} + +class FormPresenter: NSObject, FormInteractorOutput { + + weak var output: FormPresenterProtocol? + + //MARK: FormInteractorOutput + func resultForm(cellList:[CellList]) { + self.output?.loadForm(listCell: cellList) + } + + func failure(msg:String) { + self.output?.failureView(msg: msg) + } + + func validateSuccess() { + self.output?.successValidate() + } + +} diff --git a/TesteiOS/TesteiOS/Application/Controllers/Form/FormProvider.swift b/TesteiOS/TesteiOS/Application/Controllers/Form/FormProvider.swift new file mode 100644 index 00000000..c4a9085b --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Controllers/Form/FormProvider.swift @@ -0,0 +1,29 @@ +// +// FormProvider.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 07/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import Foundation +import Alamofire +import AlamofireObjectMapper +import ObjectMapper + +class FormProvider: NSObject { + + func getCellForm(completion:@escaping(_ cellBase:Cells?, _ error:Error?) -> Void) -> Void { + + request(RouterAPI.cellForm) + .validate(statusCode: 200..<300) + .responseObject { (response:DataResponse) in + switch response.result { + case .success(let cell): completion(cell, nil); break; + case .failure(let error): completion(nil, error); break; + } + } + + } + +} diff --git a/TesteiOS/TesteiOS/Application/Controllers/Form/FormSuccessViewController.swift b/TesteiOS/TesteiOS/Application/Controllers/Form/FormSuccessViewController.swift new file mode 100644 index 00000000..4ef4deb1 --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Controllers/Form/FormSuccessViewController.swift @@ -0,0 +1,33 @@ +// +// FormSuccessViewController.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 08/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import UIKit + +class FormSuccessViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + @IBAction func newMessageTapped(_ sender: Any) { + self.dismiss(animated: true, completion: nil) + } + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/TesteiOS/TesteiOS/Application/Controllers/Form/FormViewController.swift b/TesteiOS/TesteiOS/Application/Controllers/Form/FormViewController.swift new file mode 100644 index 00000000..afd3b866 --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Controllers/Form/FormViewController.swift @@ -0,0 +1,198 @@ +// +// FormViewController.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 07/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import UIKit +import MaterialComponents + +class FormViewController: UIViewController { + + @IBOutlet weak var tbView: UITableView! + + var total:Int = 0 + var objListCell:[CellList]? + var objListCellAdd:[CellList]? + var interactor: FormInteractorInput! + var type:Type? + var check:Bool = true + var index:IndexPath! + var arrFields:[ValidateValues] = [ValidateValues]() + var segue:String? + + var txFieldController: MDCTextInputControllerLegacyDefault? + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + self.showLoading() + hideKeyboardWhenTappedAround() + FormWireframe.configurate(viewcontroller: self) + self.interactor.loadForm() + } + + override func viewDidDisappear(_ animated: Bool) { + self.arrFields.removeAll() + self.segue = nil + } + + @IBAction func btnInvestimentoTapped(_ sender: ButtonStyle) { + self.dismiss(animated: true, completion: nil) + } + + private func loadXibs() { + TextFieldTableViewCell.register(to: self.tbView) + BtnFormTableViewCell.register(to: self.tbView) + TitleFormTableViewCell.register(to: self.tbView) + CheckFormTableViewCell.register(to: self.tbView) + + self.tbView.delegate = self + self.tbView.dataSource = self + self.tbView.reloadData() + } + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} + +extension FormViewController: UITableViewDelegate, UITableViewDataSource, BtnFormTableViewCellDelegate, TextFieldTableViewCellDelegate { + + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return self.total + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + if let list = self.objListCell { + + let formCell = list[indexPath.row] + let type:Type = Type(rawValue: formCell.type!)! + self.index = indexPath + + switch type { + case .text: + let titleFormTableViewCell = self.tbView.dequeueReusableCell(withIdentifier: "TitleFormTableViewCell") as! TitleFormTableViewCell + titleFormTableViewCell.setup(cell: formCell) + return titleFormTableViewCell + case .field: + let textFieldTableViewCell = self.tbView.dequeueReusableCell(withIdentifier: "TextFieldTableViewCell") as! TextFieldTableViewCell + textFieldTableViewCell.setup(cell: formCell) + textFieldTableViewCell.delegate = self + return textFieldTableViewCell + case .checkbox: + let checkFormTableViewCell = self.tbView.dequeueReusableCell(withIdentifier: "CheckFormTableViewCell") as! CheckFormTableViewCell + checkFormTableViewCell.setup(cell: formCell, self.check, row: indexPath.row) + checkFormTableViewCell.delegate = self + return checkFormTableViewCell + case .send: + let btnFormTableViewCell = self.tbView.dequeueReusableCell(withIdentifier: "BtnFormTableViewCell") as! BtnFormTableViewCell + btnFormTableViewCell.delegate = self + return btnFormTableViewCell + default: + return UITableViewCell() + } + + } + return UITableViewCell() + } + + + func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { + return UITableView.automaticDimension + } + + func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { + + if let list = self.objListCell { + let formCell = list[indexPath.row] + + if let topSpacing = formCell.topSpacing { + let min = 50 + topSpacing + let max = 65 + topSpacing + let height = ((self.tbView.frame.height - 44.0) / CGFloat(1)) + CGFloat(topSpacing) + + let h = CGFloat.minimum(CGFloat(max), height) + return CGFloat.maximum(h, CGFloat(min)) + } + + } + return UITableView.automaticDimension + } + + func segue(value:String) { + + + if self.arrFields.count >= 3 { + self.segue = value + self.interactor.validateFields(arr: self.arrFields) + }else{ + self.alertMesage(title: "Teste", msg: "Por favor, preencha os campos obrigatórios", btn: "OK") + } + + } + + func sendFields(validateValues:ValidateValues) { + self.arrFields.append(validateValues) + } + +} + +extension FormViewController: FormPresenterProtocol { + + func loadForm(listCell:[CellList]) { + self.total = listCell.count + self.objListCell = listCell + self.objListCellAdd = listCell + self.loadXibs() + self.hideLoading() + } + + func failureView(msg:String) { + self.alertMesage(title: "Teste", msg: msg, btn: "OK") + } + + func successValidate() { + if let segue = self.segue { + self.performSegue(withIdentifier: segue, sender: nil) + } + } + +} + +extension FormViewController: CheckFormTableViewCellDelegate { + + func removeCEll(show:Int, check:Bool, row:Int) { + + let newCell = self.objListCell!.filter({ $0.id! != show }) + self.total = newCell.count + self.objListCell = newCell + let indexPath = IndexPath(row: 2, section: 0) + self.tbView.deleteRows(at: [indexPath], with: .automatic) + let pah = IndexPath(item: 0, section: 0) + self.tbView.reloadRows(at: [pah], with: .automatic) + + } + + func showCELL(check:Bool, row:Int) { + if let listAdd = self.objListCellAdd { + self.check = check + self.total = listAdd.count + self.objListCell = listAdd + let indexPath = IndexPath(row: 2, section: 0) + self.tbView.insertRows(at: [indexPath], with: .automatic) + let path = IndexPath(item: 0, section: 0) + self.tbView.reloadRows(at: [path], with: .automatic) + } + } + +} diff --git a/TesteiOS/TesteiOS/Application/Controllers/Form/FormWireframe.swift b/TesteiOS/TesteiOS/Application/Controllers/Form/FormWireframe.swift new file mode 100644 index 00000000..1e0abe1d --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Controllers/Form/FormWireframe.swift @@ -0,0 +1,27 @@ +// +// FormWireframe.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 07/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import Foundation + +class FormWireframe { + + var interactor:FormInteracor? + + static func configurate(viewcontroller:FormViewController) { + + let presenter = FormPresenter() + let wireframe = FormWireframe() + let interactor = FormInteracor(presenter: presenter, wireframe: wireframe) + + viewcontroller.interactor = interactor + interactor.presentOutput = presenter + presenter.output = viewcontroller + + } + +} diff --git a/TesteiOS/TesteiOS/Application/Enums/Type.swift b/TesteiOS/TesteiOS/Application/Enums/Type.swift new file mode 100644 index 00000000..73aab6bc --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Enums/Type.swift @@ -0,0 +1,17 @@ +// +// Type.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 06/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import Foundation + +enum Type:Int { + case field = 1 + case text = 2 + case image = 3 + case checkbox = 4 + case send = 5 +} diff --git a/TesteiOS/TesteiOS/Application/Enums/TypeField.swift b/TesteiOS/TesteiOS/Application/Enums/TypeField.swift new file mode 100644 index 00000000..90f1e4d6 --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Enums/TypeField.swift @@ -0,0 +1,44 @@ +// +// TypeField.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 06/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import Foundation + +enum TypeField:Int { + case text = 1 + case telNumber = 2 + case email = 3 + case null = 4 + + static func fromString(_ str: String) -> TypeField { + switch str.lowercased() { + case "1": + return self.text + case "telnumber": + return self.telNumber + case "3": + return self.email + case "": + return self.null + default: + return self.text + } + } + + var titleField:String { + switch self { + case .telNumber: + return "Telefone" + case .email: + return "Email" + case .text: + return "Nome completo" + default: + return "Telefone" + } + } +} diff --git a/TesteiOS/TesteiOS/Application/Models/Cells/Cells.swift b/TesteiOS/TesteiOS/Application/Models/Cells/Cells.swift new file mode 100644 index 00000000..2dd5858e --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Models/Cells/Cells.swift @@ -0,0 +1,56 @@ +// +// Cells.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 06/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import Foundation +import ObjectMapper + +public final class Cells: Mappable, NSCoding { + + // MARK: Declaration for string constants to be used to decode and also serialize. + private struct SerializationKeys { + static let cellsList = "cells" + } + + // MARK: Properties + public var cellsList: [CellList]? + + // MARK: ObjectMapper Initializers + /// Map a JSON object to this class using ObjectMapper. + /// + /// - parameter map: A mapping from ObjectMapper. + public required init?(map: Map){ + + } + + /// Map a JSON object to this class using ObjectMapper. + /// + /// - parameter map: A mapping from ObjectMapper. + public func mapping(map: Map) { + cellsList <- map[SerializationKeys.cellsList] + } + + /// Generates description of the object in the form of a NSDictionary. + /// + /// - returns: A Key value pair containing all valid values in the object. + public func dictionaryRepresentation() -> [String: Any] { + var dictionary: [String: Any] = [:] + if let value = cellsList { dictionary[SerializationKeys.cellsList] = value.map { $0.dictionaryRepresentation() } } + return dictionary + } + + // MARK: NSCoding Protocol + required public init(coder aDecoder: NSCoder) { + self.cellsList = aDecoder.decodeObject(forKey: SerializationKeys.cellsList) as? [CellList] + } + + public func encode(with aCoder: NSCoder) { + aCoder.encode(cellsList, forKey: SerializationKeys.cellsList) + } + +} + diff --git a/TesteiOS/TesteiOS/Application/Models/Cells/CellsList.swift b/TesteiOS/TesteiOS/Application/Models/Cells/CellsList.swift new file mode 100644 index 00000000..3650c973 --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Models/Cells/CellsList.swift @@ -0,0 +1,98 @@ +// +// CellsList.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 06/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import Foundation +import ObjectMapper + +public final class CellList: Mappable, NSCoding { + + // MARK: Declaration for string constants to be used to decode and also serialize. + private struct SerializationKeys { + static let id = "id" + static let type = "type" + static let message = "message" + static let typefield = "typefield" + static let hidden = "hidden" + static let topSpacing = "topSpacing" + static let show = "show" + static let required = "required" + } + + // MARK: Properties + public var id:Int? + public var type:Int? + public var message:String? + public var typefield:Any? + public var hidden:Bool? + public var topSpacing:Int? + public var show:Int? + public var required:Bool? + + // MARK: ObjectMapper Initializers + /// Map a JSON object to this class using ObjectMapper. + /// + /// - parameter map: A mapping from ObjectMapper. + public required init?(map: Map){ + + } + + /// Map a JSON object to this class using ObjectMapper. + /// + /// - parameter map: A mapping from ObjectMapper. + public func mapping(map: Map) { + id <- map[SerializationKeys.id] + type <- map[SerializationKeys.type] + message <- map[SerializationKeys.message] + typefield <- map[SerializationKeys.typefield] + hidden <- map[SerializationKeys.hidden] + topSpacing <- map[SerializationKeys.topSpacing] + show <- map[SerializationKeys.show] + required <- map[SerializationKeys.required] + } + + /// Generates description of the object in the form of a NSDictionary. + /// + /// - returns: A Key value pair containing all valid values in the object. + public func dictionaryRepresentation() -> [String: Any] { + var dictionary: [String: Any] = [:] + if let value = id { dictionary[SerializationKeys.id] = value } + if let value = type { dictionary[SerializationKeys.type] = value } + if let value = message { dictionary[SerializationKeys.message] = value } + if let value = typefield { dictionary[SerializationKeys.typefield] = value } + if let value = hidden { dictionary[SerializationKeys.hidden] = value } + if let value = topSpacing { dictionary[SerializationKeys.topSpacing] = value } + if let value = show { dictionary[SerializationKeys.show] = value } + if let value = required { dictionary[SerializationKeys.required] = value } + return dictionary + } + + // MARK: NSCoding Protocol + required public init(coder aDecoder: NSCoder) { + self.id = aDecoder.decodeObject(forKey: SerializationKeys.id) as? Int + self.type = aDecoder.decodeObject(forKey: SerializationKeys.type) as? Int + self.message = aDecoder.decodeObject(forKey: SerializationKeys.message) as? String + self.typefield = aDecoder.decodeObject(forKey: SerializationKeys.typefield) as Any + self.hidden = aDecoder.decodeObject(forKey: SerializationKeys.hidden) as? Bool + self.topSpacing = aDecoder.decodeObject(forKey: SerializationKeys.topSpacing) as? Int + self.show = aDecoder.decodeObject(forKey: SerializationKeys.show) as? Int + self.required = aDecoder.decodeObject(forKey: SerializationKeys.required) as? Bool + } + + public func encode(with aCoder: NSCoder) { + aCoder.encode(id, forKey: SerializationKeys.id) + aCoder.encode(type, forKey: SerializationKeys.type) + aCoder.encode(message, forKey: SerializationKeys.message) + aCoder.encode(typefield, forKey: SerializationKeys.typefield) + aCoder.encode(hidden, forKey: SerializationKeys.hidden) + aCoder.encode(topSpacing, forKey: SerializationKeys.topSpacing) + aCoder.encode(show, forKey: SerializationKeys.show) + aCoder.encode(required, forKey: SerializationKeys.required) + } + +} + diff --git a/TesteiOS/TesteiOS/Application/Models/Details/BaseClass.swift b/TesteiOS/TesteiOS/Application/Models/Details/BaseClass.swift new file mode 100644 index 00000000..b1d77e20 --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Models/Details/BaseClass.swift @@ -0,0 +1,57 @@ +// +// BaseClass.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 06/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import Foundation +import ObjectMapper + +public final class BaseClass: Mappable, NSCoding { + + // MARK: Declaration for string constants to be used to decode and also serialize. + private struct SerializationKeys { + static let screen = "screen" + } + + // MARK: Properties + public var screen: Screen? + + // MARK: ObjectMapper Initializers + /// Map a JSON object to this class using ObjectMapper. + /// + /// - parameter map: A mapping from ObjectMapper. + public required init?(map: Map){ + + } + + /// Map a JSON object to this class using ObjectMapper. + /// + /// - parameter map: A mapping from ObjectMapper. + public func mapping(map: Map) { + screen <- map[SerializationKeys.screen] + } + + /// Generates description of the object in the form of a NSDictionary. + /// + /// - returns: A Key value pair containing all valid values in the object. + public func dictionaryRepresentation() -> [String: Any] { + var dictionary: [String: Any] = [:] + if let value = screen { dictionary[SerializationKeys.screen] = value } + return dictionary + } + + // MARK: NSCoding Protocol + required public init(coder aDecoder: NSCoder) { + self.screen = aDecoder.decodeObject(forKey: SerializationKeys.screen) as? Screen + } + + public func encode(with aCoder: NSCoder) { + aCoder.encode(screen, forKey: SerializationKeys.screen) + } + +} + + diff --git a/TesteiOS/TesteiOS/Application/Models/Details/DownInfo.swift b/TesteiOS/TesteiOS/Application/Models/Details/DownInfo.swift new file mode 100755 index 00000000..202dc384 --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Models/Details/DownInfo.swift @@ -0,0 +1,64 @@ +// +// DownInfo.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 06/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import Foundation +import ObjectMapper + +public final class DownInfo: Mappable, NSCoding { + + // MARK: Declaration for string constants to be used to decode and also serialize. + private struct SerializationKeys { + static let name = "name" + static let data = "data" + } + + // MARK: Properties + public var name: String? + public var data: String? + + // MARK: ObjectMapper Initializers + /// Map a JSON object to this class using ObjectMapper. + /// + /// - parameter map: A mapping from ObjectMapper. + public required init?(map: Map){ + + } + + /// Map a JSON object to this class using ObjectMapper. + /// + /// - parameter map: A mapping from ObjectMapper. + public func mapping(map: Map) { + name <- map[SerializationKeys.name] + data <- map[SerializationKeys.data] + } + + /// Generates description of the object in the form of a NSDictionary. + /// + /// - returns: A Key value pair containing all valid values in the object. + public func dictionaryRepresentation() -> [String: Any] { + var dictionary: [String: Any] = [:] + if let value = name { dictionary[SerializationKeys.name] = value } + if let value = data { dictionary[SerializationKeys.data] = value } + return dictionary + } + + // MARK: NSCoding Protocol + required public init(coder aDecoder: NSCoder) { + self.name = aDecoder.decodeObject(forKey: SerializationKeys.name) as? String + self.data = aDecoder.decodeObject(forKey: SerializationKeys.data) as? String + } + + public func encode(with aCoder: NSCoder) { + aCoder.encode(name, forKey: SerializationKeys.name) + aCoder.encode(data, forKey: SerializationKeys.data) + } + +} + + + diff --git a/TesteiOS/TesteiOS/Application/Models/Details/Info.swift b/TesteiOS/TesteiOS/Application/Models/Details/Info.swift new file mode 100755 index 00000000..2e102c29 --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Models/Details/Info.swift @@ -0,0 +1,65 @@ +// +// Info.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 06/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import Foundation +import ObjectMapper + +public final class Info: Mappable, NSCoding { + + // MARK: Declaration for string constants to be used to decode and also serialize. + private struct SerializationKeys { + static let name = "name" + static let data = "data" + } + + // MARK: Properties + public var name: String? + public var data: String? + + // MARK: ObjectMapper Initializers + /// Map a JSON object to this class using ObjectMapper. + /// + /// - parameter map: A mapping from ObjectMapper. + public required init?(map: Map){ + + } + + /// Map a JSON object to this class using ObjectMapper. + /// + /// - parameter map: A mapping from ObjectMapper. + public func mapping(map: Map) { + name <- map[SerializationKeys.name] + data <- map[SerializationKeys.data] + } + + /// Generates description of the object in the form of a NSDictionary. + /// + /// - returns: A Key value pair containing all valid values in the object. + public func dictionaryRepresentation() -> [String: Any] { + var dictionary: [String: Any] = [:] + if let value = name { dictionary[SerializationKeys.name] = value } + if let value = data { dictionary[SerializationKeys.data] = value } + return dictionary + } + + // MARK: NSCoding Protocol + required public init(coder aDecoder: NSCoder) { + self.name = aDecoder.decodeObject(forKey: SerializationKeys.name) as? String + self.data = aDecoder.decodeObject(forKey: SerializationKeys.data) as? String + } + + public func encode(with aCoder: NSCoder) { + aCoder.encode(name, forKey: SerializationKeys.name) + aCoder.encode(data, forKey: SerializationKeys.data) + } + +} + + + + diff --git a/TesteiOS/TesteiOS/Application/Models/Details/Month.swift b/TesteiOS/TesteiOS/Application/Models/Details/Month.swift new file mode 100644 index 00000000..6bd907dc --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Models/Details/Month.swift @@ -0,0 +1,63 @@ +// +// Month.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 06/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import Foundation +import ObjectMapper + +public final class Month: Mappable, NSCoding { + + // MARK: Declaration for string constants to be used to decode and also serialize. + private struct SerializationKeys { + static let fund = "fund" + static let cDI = "CDI" + } + + // MARK: Properties + public var fund: Double? + public var cDI: Double? + + // MARK: ObjectMapper Initializers + /// Map a JSON object to this class using ObjectMapper. + /// + /// - parameter map: A mapping from ObjectMapper. + public required init?(map: Map){ + + } + + /// Map a JSON object to this class using ObjectMapper. + /// + /// - parameter map: A mapping from ObjectMapper. + public func mapping(map: Map) { + fund <- map[SerializationKeys.fund] + cDI <- map[SerializationKeys.cDI] + } + + /// Generates description of the object in the form of a NSDictionary. + /// + /// - returns: A Key value pair containing all valid values in the object. + public func dictionaryRepresentation() -> [String: Any] { + var dictionary: [String: Any] = [:] + if let value = fund { dictionary[SerializationKeys.fund] = value } + if let value = cDI { dictionary[SerializationKeys.cDI] = value } + return dictionary + } + + // MARK: NSCoding Protocol + required public init(coder aDecoder: NSCoder) { + self.fund = aDecoder.decodeObject(forKey: SerializationKeys.fund) as? Double + self.cDI = aDecoder.decodeObject(forKey: SerializationKeys.cDI) as? Double + } + + public func encode(with aCoder: NSCoder) { + aCoder.encode(fund, forKey: SerializationKeys.fund) + aCoder.encode(cDI, forKey: SerializationKeys.cDI) + } + +} + + diff --git a/TesteiOS/TesteiOS/Application/Models/Details/Months12.swift b/TesteiOS/TesteiOS/Application/Models/Details/Months12.swift new file mode 100755 index 00000000..93473481 --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Models/Details/Months12.swift @@ -0,0 +1,63 @@ +// +// Months12.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 06/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import Foundation +import ObjectMapper + +public final class Months12: Mappable, NSCoding { + + // MARK: Declaration for string constants to be used to decode and also serialize. + private struct SerializationKeys { + static let fund = "fund" + static let cDI = "CDI" + } + + // MARK: Properties + public var fund: Double? + public var cDI: Double? + + // MARK: ObjectMapper Initializers + /// Map a JSON object to this class using ObjectMapper. + /// + /// - parameter map: A mapping from ObjectMapper. + public required init?(map: Map){ + + } + + /// Map a JSON object to this class using ObjectMapper. + /// + /// - parameter map: A mapping from ObjectMapper. + public func mapping(map: Map) { + fund <- map[SerializationKeys.fund] + cDI <- map[SerializationKeys.cDI] + } + + /// Generates description of the object in the form of a NSDictionary. + /// + /// - returns: A Key value pair containing all valid values in the object. + public func dictionaryRepresentation() -> [String: Any] { + var dictionary: [String: Any] = [:] + if let value = fund { dictionary[SerializationKeys.fund] = value } + if let value = cDI { dictionary[SerializationKeys.cDI] = value } + return dictionary + } + + // MARK: NSCoding Protocol + required public init(coder aDecoder: NSCoder) { + self.fund = aDecoder.decodeObject(forKey: SerializationKeys.fund) as? Double + self.cDI = aDecoder.decodeObject(forKey: SerializationKeys.cDI) as? Double + } + + public func encode(with aCoder: NSCoder) { + aCoder.encode(fund, forKey: SerializationKeys.fund) + aCoder.encode(cDI, forKey: SerializationKeys.cDI) + } + +} + + diff --git a/TesteiOS/TesteiOS/Application/Models/Details/MoreInfo.swift b/TesteiOS/TesteiOS/Application/Models/Details/MoreInfo.swift new file mode 100755 index 00000000..c1b5ca8b --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Models/Details/MoreInfo.swift @@ -0,0 +1,69 @@ +// +// Months12.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 06/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import Foundation +import ObjectMapper + +public final class MoreInfo: Mappable, NSCoding { + + // MARK: Declaration for string constants to be used to decode and also serialize. + private struct SerializationKeys { + static let month = "month" + static let year = "year" + static let months12 = "12months" + } + + // MARK: Properties + public var month: Month? + public var year: Year? + public var months12: Months12? + + // MARK: ObjectMapper Initializers + /// Map a JSON object to this class using ObjectMapper. + /// + /// - parameter map: A mapping from ObjectMapper. + public required init?(map: Map){ + + } + + /// Map a JSON object to this class using ObjectMapper. + /// + /// - parameter map: A mapping from ObjectMapper. + public func mapping(map: Map) { + month <- map[SerializationKeys.month] + year <- map[SerializationKeys.year] + months12 <- map[SerializationKeys.months12] + } + + /// Generates description of the object in the form of a NSDictionary. + /// + /// - returns: A Key value pair containing all valid values in the object. + public func dictionaryRepresentation() -> [String: Any] { + var dictionary: [String: Any] = [:] + if let value = month { dictionary[SerializationKeys.month] = value } + if let value = year { dictionary[SerializationKeys.year] = value } + if let value = months12 { dictionary[SerializationKeys.months12] = value } + return dictionary + } + + // MARK: NSCoding Protocol + required public init(coder aDecoder: NSCoder) { + self.month = aDecoder.decodeObject(forKey: SerializationKeys.month) as? Month + self.year = aDecoder.decodeObject(forKey: SerializationKeys.year) as? Year + self.months12 = aDecoder.decodeObject(forKey: SerializationKeys.months12) as? Months12 + } + + public func encode(with aCoder: NSCoder) { + aCoder.encode(month, forKey: SerializationKeys.month) + aCoder.encode(year, forKey: SerializationKeys.year) + aCoder.encode(months12, forKey: SerializationKeys.months12) + } + +} + + diff --git a/TesteiOS/TesteiOS/Application/Models/Details/Screen.swift b/TesteiOS/TesteiOS/Application/Models/Details/Screen.swift new file mode 100755 index 00000000..e8d11eb8 --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Models/Details/Screen.swift @@ -0,0 +1,111 @@ +// +// Screen.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 06/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import Foundation +import ObjectMapper + +public final class Screen: Mappable, NSCoding { + + // MARK: Declaration for string constants to be used to decode and also serialize. + private struct SerializationKeys { + static let title = "title" + static let fundName = "fundName" + static let whatIs = "whatIs" + static let definition = "definition" + static let riskTitle = "riskTitle" + static let risk = "risk" + static let infoTitle = "infoTitle" + static let moreInfo = "moreInfo" + static let info = "info" + static let downInfo = "downInfo" + } + + // MARK: Properties + public var title: String? + public var fundName: String? + public var whatIs: String? + public var definition: String? + public var riskTitle: String? + public var risk: Int? + public var infoTitle: String? + public var moreInfo: MoreInfo? + public var info: [Info]? + public var downInfo: [DownInfo]? + + // MARK: ObjectMapper Initializers + /// Map a JSON object to this class using ObjectMapper. + /// + /// - parameter map: A mapping from ObjectMapper. + public required init?(map: Map){ + + } + + /// Map a JSON object to this class using ObjectMapper. + /// + /// - parameter map: A mapping from ObjectMapper. + public func mapping(map: Map) { + title <- map[SerializationKeys.title] + fundName <- map[SerializationKeys.fundName] + whatIs <- map[SerializationKeys.whatIs] + definition <- map[SerializationKeys.definition] + riskTitle <- map[SerializationKeys.riskTitle] + risk <- map[SerializationKeys.risk] + infoTitle <- map[SerializationKeys.infoTitle] + moreInfo <- map[SerializationKeys.moreInfo] + info <- map[SerializationKeys.info] + downInfo <- map[SerializationKeys.downInfo] + } + + /// Generates description of the object in the form of a NSDictionary. + /// + /// - returns: A Key value pair containing all valid values in the object. + public func dictionaryRepresentation() -> [String: Any] { + var dictionary: [String: Any] = [:] + if let value = title { dictionary[SerializationKeys.title] = value } + if let value = fundName { dictionary[SerializationKeys.fundName] = value } + if let value = whatIs { dictionary[SerializationKeys.whatIs] = value } + if let value = definition { dictionary[SerializationKeys.definition] = value } + if let value = riskTitle { dictionary[SerializationKeys.riskTitle] = value } + if let value = risk { dictionary[SerializationKeys.risk] = value } + if let value = infoTitle { dictionary[SerializationKeys.infoTitle] = value } + if let value = moreInfo { dictionary[SerializationKeys.moreInfo] = value } + if let value = info { dictionary[SerializationKeys.info] = value.map({ $0.dictionaryRepresentation() }) } + if let value = downInfo { dictionary[SerializationKeys.downInfo] = value.map({ $0.dictionaryRepresentation() }) } + return dictionary + } + + // MARK: NSCoding Protocol + required public init(coder aDecoder: NSCoder) { + self.title = aDecoder.decodeObject(forKey: SerializationKeys.title) as? String + self.fundName = aDecoder.decodeObject(forKey: SerializationKeys.fundName) as? String + self.whatIs = aDecoder.decodeObject(forKey: SerializationKeys.whatIs) as? String + self.definition = aDecoder.decodeObject(forKey: SerializationKeys.definition) as? String + self.riskTitle = aDecoder.decodeObject(forKey: SerializationKeys.riskTitle) as? String + self.risk = aDecoder.decodeObject(forKey: SerializationKeys.risk) as? Int + self.infoTitle = aDecoder.decodeObject(forKey: SerializationKeys.infoTitle) as? String + self.moreInfo = aDecoder.decodeObject(forKey: SerializationKeys.moreInfo) as? MoreInfo + self.info = aDecoder.decodeObject(forKey: SerializationKeys.info) as? [Info] + self.downInfo = aDecoder.decodeObject(forKey: SerializationKeys.downInfo) as? [DownInfo] + } + + public func encode(with aCoder: NSCoder) { + aCoder.encode(title, forKey: SerializationKeys.title) + aCoder.encode(fundName, forKey: SerializationKeys.fundName) + aCoder.encode(whatIs, forKey: SerializationKeys.whatIs) + aCoder.encode(definition, forKey: SerializationKeys.definition) + aCoder.encode(riskTitle, forKey: SerializationKeys.riskTitle) + aCoder.encode(risk, forKey: SerializationKeys.risk) + aCoder.encode(infoTitle, forKey: SerializationKeys.infoTitle) + aCoder.encode(moreInfo, forKey: SerializationKeys.moreInfo) + aCoder.encode(info, forKey: SerializationKeys.info) + aCoder.encode(downInfo, forKey: SerializationKeys.downInfo) + } + +} + + diff --git a/TesteiOS/TesteiOS/Application/Models/Details/SectionScreens.swift b/TesteiOS/TesteiOS/Application/Models/Details/SectionScreens.swift new file mode 100644 index 00000000..410e4170 --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Models/Details/SectionScreens.swift @@ -0,0 +1,39 @@ +// +// SectionScreens.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 08/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import Foundation + +struct FundName { + var title:String + var name:String +} + +struct WhatIs { + var title:String + var definition:String +} + +struct RiskScreen { + var title:String + var risk:Int +} + +struct MoreInformation { + var title:String + var more:MoreInfo +} + +struct SectionScreens { + var fundName:FundName? + var whatId:WhatIs? + var riskScreen:RiskScreen? + var moreInformation:MoreInformation? + var info:[Info]? + var downInfo:[DownInfo]? + var rows:Int +} diff --git a/TesteiOS/TesteiOS/Application/Models/Details/Year.swift b/TesteiOS/TesteiOS/Application/Models/Details/Year.swift new file mode 100755 index 00000000..df924cdd --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Models/Details/Year.swift @@ -0,0 +1,63 @@ +// +// Year.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 06/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import Foundation +import ObjectMapper + +public final class Year: Mappable, NSCoding { + + // MARK: Declaration for string constants to be used to decode and also serialize. + private struct SerializationKeys { + static let fund = "fund" + static let cDI = "CDI" + } + + // MARK: Properties + public var fund: Double? + public var cDI: Double? + + // MARK: ObjectMapper Initializers + /// Map a JSON object to this class using ObjectMapper. + /// + /// - parameter map: A mapping from ObjectMapper. + public required init?(map: Map){ + + } + + /// Map a JSON object to this class using ObjectMapper. + /// + /// - parameter map: A mapping from ObjectMapper. + public func mapping(map: Map) { + fund <- map[SerializationKeys.fund] + cDI <- map[SerializationKeys.cDI] + } + + /// Generates description of the object in the form of a NSDictionary. + /// + /// - returns: A Key value pair containing all valid values in the object. + public func dictionaryRepresentation() -> [String: Any] { + var dictionary: [String: Any] = [:] + if let value = fund { dictionary[SerializationKeys.fund] = value } + if let value = cDI { dictionary[SerializationKeys.cDI] = value } + return dictionary + } + + // MARK: NSCoding Protocol + required public init(coder aDecoder: NSCoder) { + self.fund = aDecoder.decodeObject(forKey: SerializationKeys.fund) as? Double + self.cDI = aDecoder.decodeObject(forKey: SerializationKeys.cDI) as? Double + } + + public func encode(with aCoder: NSCoder) { + aCoder.encode(fund, forKey: SerializationKeys.fund) + aCoder.encode(cDI, forKey: SerializationKeys.cDI) + } + +} + + diff --git a/TesteiOS/TesteiOS/Application/Storyboards/Base.lproj/LaunchScreen.storyboard b/TesteiOS/TesteiOS/Application/Storyboards/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 00000000..bfa36129 --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Storyboards/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TesteiOS/TesteiOS/Application/Storyboards/Base.lproj/Main.storyboard b/TesteiOS/TesteiOS/Application/Storyboards/Base.lproj/Main.storyboard new file mode 100644 index 00000000..9664a4cf --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Storyboards/Base.lproj/Main.storyboard @@ -0,0 +1,258 @@ + + + + + + + + + + + + + + DINPro-Medium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TesteiOS/TesteiOS/Application/Xibs/Details/AboutTableViewCell.swift b/TesteiOS/TesteiOS/Application/Xibs/Details/AboutTableViewCell.swift new file mode 100644 index 00000000..6bb91279 --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Xibs/Details/AboutTableViewCell.swift @@ -0,0 +1,37 @@ +// +// AboutTableViewCell.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 08/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import UIKit + +class AboutTableViewCell: UITableViewCell { + + @IBOutlet weak var subTitle: UILabel! + @IBOutlet weak var title: UILabel! + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + + override func setSelected(_ selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + + // Configure the view for the selected state + } + + static func register(to tableView:UITableView) { + let nib = UINib(nibName: "AboutTableViewCell", bundle: nil) + tableView.register(nib, forCellReuseIdentifier: "AboutTableViewCell") + } + + func setup(about:WhatIs) { + self.title.text = about.title + self.subTitle.text = about.definition + } + +} diff --git a/TesteiOS/TesteiOS/Application/Xibs/Details/AboutTableViewCell.xib b/TesteiOS/TesteiOS/Application/Xibs/Details/AboutTableViewCell.xib new file mode 100644 index 00000000..14b0cfdf --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Xibs/Details/AboutTableViewCell.xib @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + DINPro-Light + + + DINPro-Medium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TesteiOS/TesteiOS/Application/Xibs/Details/DownInfoTableViewCell.swift b/TesteiOS/TesteiOS/Application/Xibs/Details/DownInfoTableViewCell.swift new file mode 100644 index 00000000..4c4432e6 --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Xibs/Details/DownInfoTableViewCell.swift @@ -0,0 +1,46 @@ +// +// DownInfoTableViewCell.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 08/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import UIKit + +protocol DownInfoTableViewCellDelegate:class { + func openSafari() +} + +class DownInfoTableViewCell: UITableViewCell { + + @IBOutlet weak var titleLabel: UILabel! + + weak var delegate:DownInfoTableViewCellDelegate? + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + + override func setSelected(_ selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + + // Configure the view for the selected state + } + + @IBAction func btnDownloadTapped(_ sender: Any) { + self.delegate?.openSafari() + } + + static func register(to tableView:UITableView) { + let nib = UINib(nibName: "DownInfoTableViewCell", bundle: nil) + tableView.register(nib, forCellReuseIdentifier: "DownInfoTableViewCell") + } + + func setup(obj:DownInfo) { + if let name = obj.name { + self.titleLabel.text = name + } + } +} diff --git a/TesteiOS/TesteiOS/Application/Xibs/Details/DownInfoTableViewCell.xib b/TesteiOS/TesteiOS/Application/Xibs/Details/DownInfoTableViewCell.xib new file mode 100644 index 00000000..152912b9 --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Xibs/Details/DownInfoTableViewCell.xib @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + DINPro-Regular + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TesteiOS/TesteiOS/Application/Xibs/Details/FundNameTableViewCell.swift b/TesteiOS/TesteiOS/Application/Xibs/Details/FundNameTableViewCell.swift new file mode 100644 index 00000000..0896c2f7 --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Xibs/Details/FundNameTableViewCell.swift @@ -0,0 +1,40 @@ +// +// FundNameTableViewCell.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 08/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import UIKit + +class FundNameTableViewCell: UITableViewCell { + + @IBOutlet weak var lbTitle: UILabel! + @IBOutlet weak var lbSubtitle: UITextView! + + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + + override func setSelected(_ selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + + // Configure the view for the selected state + } + + static func register(to tableView:UITableView) { + let nib = UINib(nibName: "FundNameTableViewCell", bundle: nil) + tableView.register(nib, forCellReuseIdentifier: "FundNameTableViewCell") + } + + func setup(fund:FundName) { + + self.lbTitle.text = fund.title + self.lbSubtitle.text = fund.name + + } + +} diff --git a/TesteiOS/TesteiOS/Application/Xibs/Details/FundNameTableViewCell.xib b/TesteiOS/TesteiOS/Application/Xibs/Details/FundNameTableViewCell.xib new file mode 100644 index 00000000..f49a0beb --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Xibs/Details/FundNameTableViewCell.xib @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + DINPro-Medium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TesteiOS/TesteiOS/Application/Xibs/Details/InfoTableViewCell.swift b/TesteiOS/TesteiOS/Application/Xibs/Details/InfoTableViewCell.swift new file mode 100644 index 00000000..e44b8c3c --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Xibs/Details/InfoTableViewCell.swift @@ -0,0 +1,37 @@ +// +// InfoTableViewCell.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 08/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import UIKit + +class InfoTableViewCell: UITableViewCell { + + @IBOutlet weak var nameLabel: UILabel! + @IBOutlet weak var subTitleLabel: UILabel! + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + + override func setSelected(_ selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + + // Configure the view for the selected state + } + + static func register(to tableView:UITableView) { + let nib = UINib(nibName: "InfoTableViewCell", bundle: nil) + tableView.register(nib, forCellReuseIdentifier: "InfoTableViewCell") + } + + func setup(obj:Info) { + self.nameLabel.text = obj.name ?? "" + self.subTitleLabel.text = obj.data ?? "Não informado" + } + +} diff --git a/TesteiOS/TesteiOS/Application/Xibs/Details/InfoTableViewCell.xib b/TesteiOS/TesteiOS/Application/Xibs/Details/InfoTableViewCell.xib new file mode 100644 index 00000000..72c3bd52 --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Xibs/Details/InfoTableViewCell.xib @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + DINPro-Regular + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TesteiOS/TesteiOS/Application/Xibs/Details/MoreInfoTableViewCell.swift b/TesteiOS/TesteiOS/Application/Xibs/Details/MoreInfoTableViewCell.swift new file mode 100644 index 00000000..9b219b5e --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Xibs/Details/MoreInfoTableViewCell.swift @@ -0,0 +1,66 @@ +// +// MoreInfoTableViewCell.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 08/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import UIKit + +class MoreInfoTableViewCell: UITableViewCell { + + @IBOutlet weak var title: UILabel! + @IBOutlet weak var next12MonthsCDI: UILabel! + @IBOutlet weak var yearCDI: UILabel! + @IBOutlet weak var monthCDI: UILabel! + + @IBOutlet weak var next12MonthsFund: UILabel! + @IBOutlet weak var yearFund: UILabel! + @IBOutlet weak var monthFund: UILabel! + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + + override func setSelected(_ selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + + // Configure the view for the selected state + } + + static func register(to tableView:UITableView) { + let nib = UINib(nibName: "MoreInfoTableViewCell", bundle: nil) + tableView.register(nib, forCellReuseIdentifier: "MoreInfoTableViewCell") + } + + func setup(obj:MoreInformation) { + + guard let month12 = obj.more.months12 else { return } + guard let month = obj.more.month else { return } + guard let year = obj.more.year else { return } + + guard let next12MonthsCDI = month12.cDI else { return } + guard let next12MonthsFund = month12.fund else { return } + + guard let monthCDI = month.cDI else { return } + guard let monthFund = month.fund else { return } + + guard let yearCDI = year.cDI else { return } + guard let yearFund = year.fund else { return } + + + + self.title.text = obj.title + self.next12MonthsCDI.text = "\(String(describing: next12MonthsCDI))%" + self.monthCDI.text = "\(String(describing: monthCDI))%" + self.yearCDI.text = "\(String(describing: yearCDI))%" + + self.next12MonthsFund.text = "\(String(describing: next12MonthsFund))%" + self.monthFund.text = "\(String(describing: monthFund))%" + self.yearFund.text = "\(String(describing: yearFund))%" + + } + +} diff --git a/TesteiOS/TesteiOS/Application/Xibs/Details/MoreInfoTableViewCell.xib b/TesteiOS/TesteiOS/Application/Xibs/Details/MoreInfoTableViewCell.xib new file mode 100644 index 00000000..d4a1bb2b --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Xibs/Details/MoreInfoTableViewCell.xib @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + DINPro-Bold + + + DINPro-Regular + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TesteiOS/TesteiOS/Application/Xibs/Details/RiskTableViewCell.swift b/TesteiOS/TesteiOS/Application/Xibs/Details/RiskTableViewCell.swift new file mode 100644 index 00000000..6cb5840c --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Xibs/Details/RiskTableViewCell.swift @@ -0,0 +1,56 @@ +// +// RiskTableViewCell.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 08/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import UIKit + +class RiskTableViewCell: UITableViewCell { + + @IBOutlet weak var title: UILabel! + @IBOutlet weak var imageRisk3: UIImageView! + @IBOutlet weak var imageRisk1: UIImageView! + @IBOutlet weak var imageRisk2: UIImageView! + @IBOutlet weak var imageRisk4: UIImageView! + @IBOutlet weak var imageRisk5: UIImageView! + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + + override func setSelected(_ selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + + // Configure the view for the selected state + } + + static func register(to tableView:UITableView) { + let nib = UINib(nibName: "RiskTableViewCell", bundle: nil) + tableView.register(nib, forCellReuseIdentifier: "RiskTableViewCell") + } + + func setup(riskObj:RiskScreen) { + + self.title.text = riskObj.title + switch riskObj.risk { + case 1: + self.imageRisk1.image = UIImage(named: "selectedGreenRisk1") + case 2: + self.imageRisk2.image = UIImage(named: "selectedGreenRisk2") + case 3: + self.imageRisk3.image = UIImage(named: "selectedOrangeRisk3") + case 4: + self.imageRisk4.image = UIImage(named: "selectedOrangeRisk4") + case 5: + self.imageRisk5.image = UIImage(named: "selectedRedRisk5") + default: + self.imageRisk1.image = UIImage(named: "selectedGreenRisk1") + } + + } + +} diff --git a/TesteiOS/TesteiOS/Application/Xibs/Details/RiskTableViewCell.xib b/TesteiOS/TesteiOS/Application/Xibs/Details/RiskTableViewCell.xib new file mode 100644 index 00000000..41a364bc --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Xibs/Details/RiskTableViewCell.xib @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + DINPro-Bold + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TesteiOS/TesteiOS/Application/Xibs/Form/BtnFormTableViewCell.swift b/TesteiOS/TesteiOS/Application/Xibs/Form/BtnFormTableViewCell.swift new file mode 100644 index 00000000..4b635d82 --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Xibs/Form/BtnFormTableViewCell.swift @@ -0,0 +1,39 @@ +// +// BtnFormTableViewCell.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 07/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import UIKit + +protocol BtnFormTableViewCellDelegate: class { + func segue(value:String) +} + +class BtnFormTableViewCell: UITableViewCell { + + weak var delegate:BtnFormTableViewCellDelegate? + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + + override func setSelected(_ selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + + // Configure the view for the selected state + } + + @IBAction func btnSendTapped(_ sender: ButtonStyle) { + self.delegate?.segue(value: "sgSentMessage") + } + + static func register(to tableView:UITableView) { + let nib = UINib(nibName: "BtnFormTableViewCell", bundle: nil) + tableView.register(nib, forCellReuseIdentifier: "BtnFormTableViewCell") + } + +} diff --git a/TesteiOS/TesteiOS/Application/Xibs/Form/BtnFormTableViewCell.xib b/TesteiOS/TesteiOS/Application/Xibs/Form/BtnFormTableViewCell.xib new file mode 100644 index 00000000..dc2cf02b --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Xibs/Form/BtnFormTableViewCell.xib @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + DINPro-Medium + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TesteiOS/TesteiOS/Application/Xibs/Form/CheckFormTableViewCell.swift b/TesteiOS/TesteiOS/Application/Xibs/Form/CheckFormTableViewCell.swift new file mode 100644 index 00000000..bda98421 --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Xibs/Form/CheckFormTableViewCell.swift @@ -0,0 +1,66 @@ +// +// CheckFormTableViewCell.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 07/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import UIKit + +protocol CheckFormTableViewCellDelegate:class { + func removeCEll(show:Int, check:Bool, row:Int) + func showCELL(check:Bool, row:Int) +} + +class CheckFormTableViewCell: UITableViewCell { + + @IBOutlet weak var btnCheck: UIButton! + var check:Bool = true + private var show:Int! + private var row:Int! + + weak var delegate:CheckFormTableViewCellDelegate? + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + + override func setSelected(_ selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + + // Configure the view for the selected state + } + + func setup(cell:CellList, _ check:Bool = true, row:Int) { + self.row = row + guard let value = cell.show else { + return + } + self.show = value + self.check = check + self.btnCheck.setImage(UIImage(named: "checked"), for: .normal) + if !check { + self.btnCheck.setImage(UIImage(named: "unchecked"), for: .normal) + } + } + + @IBAction func btnCheckTapped(_ sender: Any) { + if !self.check { + self.btnCheck.setImage(UIImage(named: "checked"), for: .normal) + self.check = true + self.delegate?.showCELL(check: self.check, row: self.row) + }else{ + self.check = false + self.btnCheck.setImage(UIImage(named: "unchecked"), for: .normal) + self.delegate?.removeCEll(show: self.show, check: self.check, row: self.row) + } + } + + static func register(to tableView:UITableView) { + let nib = UINib(nibName: "CheckFormTableViewCell", bundle: nil) + tableView.register(nib, forCellReuseIdentifier: "CheckFormTableViewCell") + } + +} diff --git a/TesteiOS/TesteiOS/Application/Xibs/Form/CheckFormTableViewCell.xib b/TesteiOS/TesteiOS/Application/Xibs/Form/CheckFormTableViewCell.xib new file mode 100644 index 00000000..b12ffda4 --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Xibs/Form/CheckFormTableViewCell.xib @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + DINPro-Regular + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TesteiOS/TesteiOS/Application/Xibs/Form/TextFieldTableViewCell.swift b/TesteiOS/TesteiOS/Application/Xibs/Form/TextFieldTableViewCell.swift new file mode 100644 index 00000000..19910344 --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Xibs/Form/TextFieldTableViewCell.swift @@ -0,0 +1,174 @@ +// +// TextFieldTableViewCell.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 07/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import UIKit +import MaterialComponents + +struct ValidateValues { + var value:String + var type:TypeField +} + +protocol TextFieldTableViewCellDelegate: class { + func sendFields(validateValues:ValidateValues) +} + +class TextFieldTableViewCell: UITableViewCell { + + @IBOutlet weak var txField: MDCTextField! + + private var txFieldController: MDCTextInputControllerLegacyDefault? + private var type:Type! + private var typeField:TypeField! + private var validator:Validator! + + weak var delegate:TextFieldTableViewCellDelegate? + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + + override func setSelected(_ selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + + // Configure the view for the selected state + } + + func setup(cell:CellList) { + + guard let typeTF = cell.typefield else { + return + } + + guard let typeCell = cell.type else { + return + } + + + self.typeField = TypeField.fromString("\(typeTF)") + self.type = Type(rawValue: typeCell)! + self.validator = Validator(typefield: self.typeField) + + self.txFieldController = MDCTextInputControllerLegacyDefault(textInput: self.txField) + + self.txFieldController?.floatingPlaceholderActiveColor = UIColor.borderColor() + self.txFieldController?.placeholderText = self.typeField.titleField + + self.txField.delegate = self + + } + + static func register(to tableView:UITableView) { + let nib = UINib(nibName: "TextFieldTableViewCell", bundle: nil) + tableView.register(nib, forCellReuseIdentifier: "TextFieldTableViewCell") + } + +} + +extension TextFieldTableViewCell: UITextFieldDelegate { + + func textFieldDidBeginEditing(_ textField: UITextField) { + switch self.validator.typefield { + case .email: + let text = textField.text ?? "" + if self.validator.validateEmail(email: text) { + self.txFieldController?.activeColor = UIColor.textFieldSuccess() + }else{ + self.txFieldController?.activeColor = UIColor.textFieldFailure() + } + case .telNumber: + let text = textField.text ?? "" + if self.validator.validatePhone(phone: text) { + self.txFieldController?.activeColor = UIColor.textFieldSuccess() + }else{ + self.txFieldController?.activeColor = UIColor.textFieldFailure() + } + default: + let text = textField.text ?? "" + if self.validator.validate(text) { + self.txFieldController?.activeColor = UIColor.textFieldSuccess() + }else{ + self.txFieldController?.activeColor = UIColor.textFieldFailure() + } + } + } + + func textFieldDidEndEditing(_ textField: UITextField) { + var validateValues:ValidateValues! + switch self.validator.typefield { + case .email: + let text = textField.text ?? "" + validateValues = ValidateValues(value: text, type: TypeField.email) + case .telNumber: + let text = textField.text ?? "" + validateValues = ValidateValues(value: text, type: TypeField.telNumber) + default: + let text = textField.text ?? "" + validateValues = ValidateValues(value: text, type: TypeField.text) + } + + self.delegate?.sendFields(validateValues: validateValues) + } + + func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { + switch self.validator.typefield { + case .email: + if let text = textField.text { + if let textRange = Range(range, in: text) { + let updateText = text.replacingCharacters(in: textRange, with: string) + + if updateText.isEmpty { + self.txFieldController?.activeColor = UIColor.borderColor() + }else{ + if self.validator.validateEmail(email: updateText) { + self.txFieldController?.activeColor = UIColor.textFieldSuccess() + }else{ + self.txFieldController?.activeColor = UIColor.textFieldFailure() + } + } + + } + + } + case .telNumber: + var text = textField.text ?? "" + text.append(string) + if range.length == 1 { + self.txFieldController?.activeColor = UIColor.textFieldFailure() + textField.text = self.validator.format(phoneNumber: text, shouldRemoveLastDigit: true) + } else { + textField.text = self.validator.format(phoneNumber: text) + if self.validator.validatePhone(phone: textField.text!) { + self.txFieldController?.activeColor = UIColor.textFieldSuccess() + }else{ + self.txFieldController?.activeColor = UIColor.textFieldFailure() + } + } + return false + default: + if let text = textField.text { + if let textRange = Range(range, in: text) { + let updateText = text.replacingCharacters(in: textRange, with: string) + + if updateText.isEmpty { + self.txFieldController?.activeColor = UIColor.borderColor() + }else{ + if self.validator.validate(updateText) { + self.txFieldController?.activeColor = UIColor.textFieldSuccess() + }else{ + self.txFieldController?.activeColor = UIColor.textFieldFailure() + } + } + + } + } + } + return true + } +} diff --git a/TesteiOS/TesteiOS/Application/Xibs/Form/TextFieldTableViewCell.xib b/TesteiOS/TesteiOS/Application/Xibs/Form/TextFieldTableViewCell.xib new file mode 100644 index 00000000..7ca9c007 --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Xibs/Form/TextFieldTableViewCell.xib @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + DINMittelschriftStd + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TesteiOS/TesteiOS/Application/Xibs/Form/TitleFormTableViewCell.swift b/TesteiOS/TesteiOS/Application/Xibs/Form/TitleFormTableViewCell.swift new file mode 100644 index 00000000..3c78844c --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Xibs/Form/TitleFormTableViewCell.swift @@ -0,0 +1,40 @@ +// +// TitleFormTableViewCell.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 07/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import UIKit + +class TitleFormTableViewCell: UITableViewCell { + + @IBOutlet weak var lbTitle: UILabel! + + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + + override func setSelected(_ selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + + // Configure the view for the selected state + } + + func setup(cell:CellList) { + + if let msg = cell.message { + self.lbTitle.text = msg + } + + } + + static func register(to tableView:UITableView) { + let nib = UINib(nibName: "TitleFormTableViewCell", bundle: nil) + tableView.register(nib, forCellReuseIdentifier: "TitleFormTableViewCell") + } + +} diff --git a/TesteiOS/TesteiOS/Application/Xibs/Form/TitleFormTableViewCell.xib b/TesteiOS/TesteiOS/Application/Xibs/Form/TitleFormTableViewCell.xib new file mode 100644 index 00000000..e3a86cdb --- /dev/null +++ b/TesteiOS/TesteiOS/Application/Xibs/Form/TitleFormTableViewCell.xib @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + DINPro-Bold + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TesteiOS/TesteiOS/Application/infrastructure/RouterAPI.swift b/TesteiOS/TesteiOS/Application/infrastructure/RouterAPI.swift new file mode 100644 index 00000000..ed5125ed --- /dev/null +++ b/TesteiOS/TesteiOS/Application/infrastructure/RouterAPI.swift @@ -0,0 +1,54 @@ +// +// RouterAPI.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 07/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import Alamofire + +enum RouterAPI : URLRequestConvertible { + + static let url:String = "https://floating-mountain-50292.herokuapp.com/" + + case cellForm + case detail + + var header : HTTPHeaders { + return ["Content-Type":"application/x-www-form-urlencoded"] + } + + var method : HTTPMethod { + switch self { + case .cellForm: return .get + case .detail: return .get + } + } + + var path : String { + switch self { + + //USERS + case .cellForm: + return "cells.json" + case .detail: + return "fund.json" + + } + } + + func asURLRequest() throws -> URLRequest { + let url = try RouterAPI.url.asURL() + + var urlRequest = URLRequest(url: url.appendingPathComponent(path)) + urlRequest.httpMethod = method.rawValue + urlRequest.allHTTPHeaderFields = header + + print("URL_REQUEST => ", urlRequest) + + return urlRequest + } + +} + diff --git a/TesteiOS/TesteiOS/Application/infrastructure/Style/ButtonStyle.swift b/TesteiOS/TesteiOS/Application/infrastructure/Style/ButtonStyle.swift new file mode 100644 index 00000000..96dc9933 --- /dev/null +++ b/TesteiOS/TesteiOS/Application/infrastructure/Style/ButtonStyle.swift @@ -0,0 +1,83 @@ +// +// ButtonStyle.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 07/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import UIKit + +@IBDesignable +class ButtonStyle : UIButton { + + let gradientLayer = CAGradientLayer() + var status:Bool = false + + func disableButton(){ + self.backgroundColor = UIColor.tabbarDefaultColor() + } + + func usedButton(){ + self.status = !status + + if status{ + self.disableButton() + }else{ + self.enableButton() + } + } + + func enableButton(){ + self.backgroundColor = UIColor.tabbarSelectedColor() + } + + @IBInspectable var cornerRadius : CGFloat = 0{ + didSet{ + layer.cornerRadius = cornerRadius + layer.masksToBounds = cornerRadius > 0 + } + } + + @IBInspectable var borderWidth : CGFloat = 0 { + didSet{ + layer.borderWidth = borderWidth + } + } + + @IBInspectable var borderColorCV : UIColor? { + didSet { + layer.borderColor = borderColorCV?.cgColor + } + } + + @IBInspectable + var topGradientColor: UIColor? { + didSet { + setGradient(topGradientColor: topGradientColor, bottomGradientColor: bottomGradientColor) + } + } + + @IBInspectable + var bottomGradientColor: UIColor? { + didSet { + setGradient(topGradientColor: topGradientColor, bottomGradientColor: bottomGradientColor) + } + } + + private func setGradient(topGradientColor: UIColor?, bottomGradientColor: UIColor?) { + if let topGradientColor = topGradientColor, let bottomGradientColor = bottomGradientColor { + gradientLayer.frame = bounds + gradientLayer.colors = [topGradientColor.cgColor, bottomGradientColor.cgColor] + gradientLayer.borderColor = layer.borderColor + gradientLayer.borderWidth = layer.borderWidth + gradientLayer.cornerRadius = layer.cornerRadius + layer.insertSublayer(gradientLayer, at: 0) + } else { + gradientLayer.removeFromSuperlayer() + } + } + +} + + diff --git a/TesteiOS/TesteiOS/Application/infrastructure/Validator.swift b/TesteiOS/TesteiOS/Application/infrastructure/Validator.swift new file mode 100644 index 00000000..6cf5e048 --- /dev/null +++ b/TesteiOS/TesteiOS/Application/infrastructure/Validator.swift @@ -0,0 +1,79 @@ +// +// Validator.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 08/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import Foundation + +class Validator { + var typefield: TypeField + + init( typefield: TypeField?) { + self.typefield = typefield ?? TypeField.text + } + + func validate(_ str: String?) -> Bool{ + guard let str = str, !str.isEmpty else{ + return false + } + + switch typefield { + case .email: + return validateEmail(email: str) + case .telNumber: + return validatePhone(phone: str) + case .text: + return true + default: + return false + } + } + + func validateEmail(email str: String) -> Bool{ + let regex = try! NSRegularExpression(pattern: "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,30}", options: .caseInsensitive) + return regex.firstMatch(in: str, options: [], range: NSRange(location: 0, length: str.count)) != nil + } + + func validatePhone(phone str: String) -> Bool{ + let str = str.onlyDigits + let regex = try! NSRegularExpression(pattern: "^[0-9]{10,11}$", options: .caseInsensitive) + return regex.firstMatch(in: str, options: [], range: NSRange(location: 0, length: str.count)) != nil + } + + func format(phoneNumber: String, shouldRemoveLastDigit: Bool = false) -> String { + guard !phoneNumber.isEmpty else { return "" } + guard let regex = try? NSRegularExpression(pattern: "[\\s-\\(\\)]", options: .caseInsensitive) else { return "" } + let r = NSString(string: phoneNumber).range(of: phoneNumber) + var number = regex.stringByReplacingMatches(in: phoneNumber, options: .init(rawValue: 0), range: r, withTemplate: "") + + if number.count > 11 { + let tenthDigitIndex = number.index(number.startIndex, offsetBy: 11) + number = String(number[number.startIndex.. UIColor { + return UIColor(red: 218/255.0, green: 1/255.0, blue: 1/255.0, alpha: 1.0) + } + + static func txLabel51() -> UIColor { + return UIColor(red: 51/255.0, green: 51/255.0, blue: 51/255.0, alpha: 1.0) + } + + static func txLabel172() -> UIColor { + return UIColor(red: 172/255.0, green: 172/255.0, blue: 172/255.0, alpha: 1.0) + } + + static func borderColor() -> UIColor { + return UIColor(red: 151/255.0, green: 151/255.0, blue: 151/255.0, alpha: 1.0) + } + + static func labelWhite() -> UIColor { + return UIColor.white + } + + static func textFieldFailure() -> UIColor { + return UIColor(red: 255/255.0, green: 31/255.0, blue: 31/255.0, alpha: 1.0) + } + + static func textFieldSuccess() -> UIColor { + return UIColor(red: 101/255.0, green: 190/255.0, blue: 48/255.0, alpha: 1.0) + } + + static func swColorOne() -> UIColor { + return UIColor(red: 116/255.0, green: 218/255.0, blue: 97/255.0, alpha: 1.0) + } + + static func swColorTwo() -> UIColor { + return UIColor(red: 74/255.0, green: 193/255.0, blue: 108/255.0, alpha: 1.0) + } + + static func swColorTree() -> UIColor { + return UIColor(red: 255/255.0, green: 192/255.0, blue: 17/255.0, alpha: 1.0) + } + + static func swColorFour() -> UIColor { + return UIColor(red: 255/255.0, green: 116/255.0, blue: 44/255.0, alpha: 1.0) + } + + static func swColorFive() -> UIColor { + return UIColor(red: 255/255.0, green: 54/255.0, blue: 52/255.0, alpha: 1.0) + } + + static func tabbarSelectedColor() -> UIColor { + return UIColor(red: 218/255.0, green: 1/255.0, blue: 1/255.0, alpha: 0.1) + } + + static func tabbarDefaultColor() -> UIColor { + return UIColor(red: 218/255.0, green: 1/255.0, blue: 1/255.0, alpha: 1.0) + } +} diff --git a/TesteiOS/TesteiOS/Application/infrastructure/extensions/Extension+UIImage.swift b/TesteiOS/TesteiOS/Application/infrastructure/extensions/Extension+UIImage.swift new file mode 100644 index 00000000..b50bd221 --- /dev/null +++ b/TesteiOS/TesteiOS/Application/infrastructure/extensions/Extension+UIImage.swift @@ -0,0 +1,32 @@ +// +// Extension+UIImage.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 07/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import Foundation +import UIKit + +extension UIImage { + + func createSelectionIndicator(color: UIColor, size: CGSize, lineWidth: CGFloat, up:Bool) -> UIImage { + + var position:CGFloat? + + if up { + position = size.height - size.height + }else{ + position = size.height - lineWidth + } + + UIGraphicsBeginImageContextWithOptions(size, false, 0) + color.setFill() + UIRectFill(CGRect(origin: CGPoint(x: 0,y :position!), size: CGSize(width: size.width, height: lineWidth))) + let image = UIGraphicsGetImageFromCurrentImageContext() + UIGraphicsEndImageContext() + return image! + } + +} diff --git a/TesteiOS/TesteiOS/Application/infrastructure/extensions/Extension.swift b/TesteiOS/TesteiOS/Application/infrastructure/extensions/Extension.swift new file mode 100644 index 00000000..b783953c --- /dev/null +++ b/TesteiOS/TesteiOS/Application/infrastructure/extensions/Extension.swift @@ -0,0 +1,49 @@ +// +// Extension.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 07/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import Foundation +import UIKit +import MBProgressHUD + +extension UIViewController { + + func setSelectionIndicatorImage() { + + if let tabBar = self.tabBarController?.tabBar { + tabBar.selectionIndicatorImage = UIImage().createSelectionIndicator(color: UIColor.btnSend(), size: CGSize(width: tabBar.frame.width/CGFloat(tabBar.items!.count), height: tabBar.frame.height), lineWidth: 2.0, up: true) + + } + } + + func hideKeyboardWhenTappedAround() { + let tap : UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard)) + view.addGestureRecognizer(tap) + } + + @objc func dismissKeyboard() { + view.endEditing(true) + } + + func alertMesage(title:String, msg:String, btn:String){ + let alert = UIAlertController(title: title, message: msg, preferredStyle: .alert) + alert.addAction(UIAlertAction(title: btn, style: .default, handler: nil)) + self.present(alert, animated: true, completion: nil) + } + + func showLoading(){ + DispatchQueue.main.async { + MBProgressHUD.showAdded(to: self.view, animated: true) + } + } + + func hideLoading(){ + DispatchQueue.main.async { + MBProgressHUD.hide(for: self.view, animated: true) + } + } +} diff --git a/TesteiOS/TesteiOS/Assets.xcassets/AppIcon.appiconset/Contents.json b/TesteiOS/TesteiOS/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..d8db8d65 --- /dev/null +++ b/TesteiOS/TesteiOS/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "83.5x83.5", + "scale" : "2x" + }, + { + "idiom" : "ios-marketing", + "size" : "1024x1024", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TesteiOS/TesteiOS/Assets.xcassets/Contents.json b/TesteiOS/TesteiOS/Assets.xcassets/Contents.json new file mode 100644 index 00000000..da4a164c --- /dev/null +++ b/TesteiOS/TesteiOS/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TesteiOS/TesteiOS/Assets.xcassets/Risk1lightGreen.imageset/Contents.json b/TesteiOS/TesteiOS/Assets.xcassets/Risk1lightGreen.imageset/Contents.json new file mode 100644 index 00000000..35d6ecb3 --- /dev/null +++ b/TesteiOS/TesteiOS/Assets.xcassets/Risk1lightGreen.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "Risk1lightGreen.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "Risk1lightGreen@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "Risk1lightGreen@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TesteiOS/TesteiOS/Assets.xcassets/Risk1lightGreen.imageset/Risk1lightGreen.png b/TesteiOS/TesteiOS/Assets.xcassets/Risk1lightGreen.imageset/Risk1lightGreen.png new file mode 100644 index 00000000..029e6bd7 Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/Risk1lightGreen.imageset/Risk1lightGreen.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/Risk1lightGreen.imageset/Risk1lightGreen@2x.png b/TesteiOS/TesteiOS/Assets.xcassets/Risk1lightGreen.imageset/Risk1lightGreen@2x.png new file mode 100644 index 00000000..df8d6cf5 Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/Risk1lightGreen.imageset/Risk1lightGreen@2x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/Risk1lightGreen.imageset/Risk1lightGreen@3x.png b/TesteiOS/TesteiOS/Assets.xcassets/Risk1lightGreen.imageset/Risk1lightGreen@3x.png new file mode 100644 index 00000000..203c7c17 Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/Risk1lightGreen.imageset/Risk1lightGreen@3x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/Risk2green.imageset/Contents.json b/TesteiOS/TesteiOS/Assets.xcassets/Risk2green.imageset/Contents.json new file mode 100644 index 00000000..7eb1cfc2 --- /dev/null +++ b/TesteiOS/TesteiOS/Assets.xcassets/Risk2green.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "Risk2green.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "Risk2green@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "Risk2green@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TesteiOS/TesteiOS/Assets.xcassets/Risk2green.imageset/Risk2green.png b/TesteiOS/TesteiOS/Assets.xcassets/Risk2green.imageset/Risk2green.png new file mode 100644 index 00000000..1a62f2dc Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/Risk2green.imageset/Risk2green.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/Risk2green.imageset/Risk2green@2x.png b/TesteiOS/TesteiOS/Assets.xcassets/Risk2green.imageset/Risk2green@2x.png new file mode 100644 index 00000000..0e159f77 Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/Risk2green.imageset/Risk2green@2x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/Risk2green.imageset/Risk2green@3x.png b/TesteiOS/TesteiOS/Assets.xcassets/Risk2green.imageset/Risk2green@3x.png new file mode 100644 index 00000000..11ddc192 Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/Risk2green.imageset/Risk2green@3x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/Risk3yellow.imageset/Contents.json b/TesteiOS/TesteiOS/Assets.xcassets/Risk3yellow.imageset/Contents.json new file mode 100644 index 00000000..c5629a67 --- /dev/null +++ b/TesteiOS/TesteiOS/Assets.xcassets/Risk3yellow.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "Risk3yellow.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "Risk3yellow@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "Risk3yellow@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TesteiOS/TesteiOS/Assets.xcassets/Risk3yellow.imageset/Risk3yellow.png b/TesteiOS/TesteiOS/Assets.xcassets/Risk3yellow.imageset/Risk3yellow.png new file mode 100644 index 00000000..3b7455b4 Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/Risk3yellow.imageset/Risk3yellow.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/Risk3yellow.imageset/Risk3yellow@2x.png b/TesteiOS/TesteiOS/Assets.xcassets/Risk3yellow.imageset/Risk3yellow@2x.png new file mode 100644 index 00000000..44c11673 Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/Risk3yellow.imageset/Risk3yellow@2x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/Risk3yellow.imageset/Risk3yellow@3x.png b/TesteiOS/TesteiOS/Assets.xcassets/Risk3yellow.imageset/Risk3yellow@3x.png new file mode 100644 index 00000000..99256b07 Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/Risk3yellow.imageset/Risk3yellow@3x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/Risk4lightOrange.imageset/Contents.json b/TesteiOS/TesteiOS/Assets.xcassets/Risk4lightOrange.imageset/Contents.json new file mode 100644 index 00000000..d8da936f --- /dev/null +++ b/TesteiOS/TesteiOS/Assets.xcassets/Risk4lightOrange.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "Risk4lightOrange.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "Risk4lightOrange@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "Risk4lightOrange@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TesteiOS/TesteiOS/Assets.xcassets/Risk4lightOrange.imageset/Risk4lightOrange.png b/TesteiOS/TesteiOS/Assets.xcassets/Risk4lightOrange.imageset/Risk4lightOrange.png new file mode 100644 index 00000000..579983b8 Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/Risk4lightOrange.imageset/Risk4lightOrange.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/Risk4lightOrange.imageset/Risk4lightOrange@2x.png b/TesteiOS/TesteiOS/Assets.xcassets/Risk4lightOrange.imageset/Risk4lightOrange@2x.png new file mode 100644 index 00000000..dcd70529 Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/Risk4lightOrange.imageset/Risk4lightOrange@2x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/Risk4lightOrange.imageset/Risk4lightOrange@3x.png b/TesteiOS/TesteiOS/Assets.xcassets/Risk4lightOrange.imageset/Risk4lightOrange@3x.png new file mode 100644 index 00000000..e3fcb506 Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/Risk4lightOrange.imageset/Risk4lightOrange@3x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/Risk5Orange.imageset/Contents.json b/TesteiOS/TesteiOS/Assets.xcassets/Risk5Orange.imageset/Contents.json new file mode 100644 index 00000000..90f18161 --- /dev/null +++ b/TesteiOS/TesteiOS/Assets.xcassets/Risk5Orange.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "Risk5Orange.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "Risk5Orange@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "Risk5Orange@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TesteiOS/TesteiOS/Assets.xcassets/Risk5Orange.imageset/Risk5Orange.png b/TesteiOS/TesteiOS/Assets.xcassets/Risk5Orange.imageset/Risk5Orange.png new file mode 100644 index 00000000..2697c79d Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/Risk5Orange.imageset/Risk5Orange.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/Risk5Orange.imageset/Risk5Orange@2x.png b/TesteiOS/TesteiOS/Assets.xcassets/Risk5Orange.imageset/Risk5Orange@2x.png new file mode 100644 index 00000000..b0e5803c Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/Risk5Orange.imageset/Risk5Orange@2x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/Risk5Orange.imageset/Risk5Orange@3x.png b/TesteiOS/TesteiOS/Assets.xcassets/Risk5Orange.imageset/Risk5Orange@3x.png new file mode 100644 index 00000000..b9a37bbe Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/Risk5Orange.imageset/Risk5Orange@3x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/Spearador.imageset/Contents.json b/TesteiOS/TesteiOS/Assets.xcassets/Spearador.imageset/Contents.json new file mode 100644 index 00000000..ef9b35bd --- /dev/null +++ b/TesteiOS/TesteiOS/Assets.xcassets/Spearador.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "Spearador.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "Spearador@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "Spearador@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TesteiOS/TesteiOS/Assets.xcassets/Spearador.imageset/Spearador.png b/TesteiOS/TesteiOS/Assets.xcassets/Spearador.imageset/Spearador.png new file mode 100644 index 00000000..42738412 Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/Spearador.imageset/Spearador.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/Spearador.imageset/Spearador@2x.png b/TesteiOS/TesteiOS/Assets.xcassets/Spearador.imageset/Spearador@2x.png new file mode 100644 index 00000000..7ded029d Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/Spearador.imageset/Spearador@2x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/Spearador.imageset/Spearador@3x.png b/TesteiOS/TesteiOS/Assets.xcassets/Spearador.imageset/Spearador@3x.png new file mode 100644 index 00000000..d48143c7 Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/Spearador.imageset/Spearador@3x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/arrowDown.imageset/Contents.json b/TesteiOS/TesteiOS/Assets.xcassets/arrowDown.imageset/Contents.json new file mode 100644 index 00000000..212cbe61 --- /dev/null +++ b/TesteiOS/TesteiOS/Assets.xcassets/arrowDown.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "arrowDown@1x.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "arrowDown@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "arrowDown@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TesteiOS/TesteiOS/Assets.xcassets/arrowDown.imageset/arrowDown@1x.png b/TesteiOS/TesteiOS/Assets.xcassets/arrowDown.imageset/arrowDown@1x.png new file mode 100644 index 00000000..dfeb76c0 Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/arrowDown.imageset/arrowDown@1x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/arrowDown.imageset/arrowDown@2x.png b/TesteiOS/TesteiOS/Assets.xcassets/arrowDown.imageset/arrowDown@2x.png new file mode 100644 index 00000000..1219c0fa Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/arrowDown.imageset/arrowDown@2x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/arrowDown.imageset/arrowDown@3x.png b/TesteiOS/TesteiOS/Assets.xcassets/arrowDown.imageset/arrowDown@3x.png new file mode 100644 index 00000000..80187b04 Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/arrowDown.imageset/arrowDown@3x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/baixar.imageset/Contents.json b/TesteiOS/TesteiOS/Assets.xcassets/baixar.imageset/Contents.json new file mode 100644 index 00000000..389872d3 --- /dev/null +++ b/TesteiOS/TesteiOS/Assets.xcassets/baixar.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "baixar.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "baixar@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "baixar@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TesteiOS/TesteiOS/Assets.xcassets/baixar.imageset/baixar.png b/TesteiOS/TesteiOS/Assets.xcassets/baixar.imageset/baixar.png new file mode 100644 index 00000000..af9ff1bd Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/baixar.imageset/baixar.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/baixar.imageset/baixar@2x.png b/TesteiOS/TesteiOS/Assets.xcassets/baixar.imageset/baixar@2x.png new file mode 100644 index 00000000..7a272430 Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/baixar.imageset/baixar@2x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/baixar.imageset/baixar@3x.png b/TesteiOS/TesteiOS/Assets.xcassets/baixar.imageset/baixar@3x.png new file mode 100644 index 00000000..6b27654e Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/baixar.imageset/baixar@3x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/checked.imageset/Contents.json b/TesteiOS/TesteiOS/Assets.xcassets/checked.imageset/Contents.json new file mode 100644 index 00000000..59532fd1 --- /dev/null +++ b/TesteiOS/TesteiOS/Assets.xcassets/checked.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "checked.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "checked@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "checked@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TesteiOS/TesteiOS/Assets.xcassets/checked.imageset/checked.png b/TesteiOS/TesteiOS/Assets.xcassets/checked.imageset/checked.png new file mode 100644 index 00000000..560d49a0 Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/checked.imageset/checked.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/checked.imageset/checked@2x.png b/TesteiOS/TesteiOS/Assets.xcassets/checked.imageset/checked@2x.png new file mode 100644 index 00000000..b7ea965b Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/checked.imageset/checked@2x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/checked.imageset/checked@3x.png b/TesteiOS/TesteiOS/Assets.xcassets/checked.imageset/checked@3x.png new file mode 100644 index 00000000..6ace6a7b Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/checked.imageset/checked@3x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/download.imageset/Contents.json b/TesteiOS/TesteiOS/Assets.xcassets/download.imageset/Contents.json new file mode 100644 index 00000000..f330e9e4 --- /dev/null +++ b/TesteiOS/TesteiOS/Assets.xcassets/download.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "download@1x.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "download@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "download@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TesteiOS/TesteiOS/Assets.xcassets/download.imageset/download@1x.png b/TesteiOS/TesteiOS/Assets.xcassets/download.imageset/download@1x.png new file mode 100644 index 00000000..3c16dcba Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/download.imageset/download@1x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/download.imageset/download@2x.png b/TesteiOS/TesteiOS/Assets.xcassets/download.imageset/download@2x.png new file mode 100644 index 00000000..4da26871 Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/download.imageset/download@2x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/download.imageset/download@3x.png b/TesteiOS/TesteiOS/Assets.xcassets/download.imageset/download@3x.png new file mode 100644 index 00000000..03332568 Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/download.imageset/download@3x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/selectedGreenRisk1.imageset/Contents.json b/TesteiOS/TesteiOS/Assets.xcassets/selectedGreenRisk1.imageset/Contents.json new file mode 100644 index 00000000..bdf91e80 --- /dev/null +++ b/TesteiOS/TesteiOS/Assets.xcassets/selectedGreenRisk1.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "selectedGreenRisk1.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "selectedGreenRisk1@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "selectedGreenRisk1@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TesteiOS/TesteiOS/Assets.xcassets/selectedGreenRisk1.imageset/selectedGreenRisk1.png b/TesteiOS/TesteiOS/Assets.xcassets/selectedGreenRisk1.imageset/selectedGreenRisk1.png new file mode 100644 index 00000000..1b1c4205 Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/selectedGreenRisk1.imageset/selectedGreenRisk1.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/selectedGreenRisk1.imageset/selectedGreenRisk1@2x.png b/TesteiOS/TesteiOS/Assets.xcassets/selectedGreenRisk1.imageset/selectedGreenRisk1@2x.png new file mode 100644 index 00000000..de607804 Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/selectedGreenRisk1.imageset/selectedGreenRisk1@2x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/selectedGreenRisk1.imageset/selectedGreenRisk1@3x.png b/TesteiOS/TesteiOS/Assets.xcassets/selectedGreenRisk1.imageset/selectedGreenRisk1@3x.png new file mode 100644 index 00000000..35478811 Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/selectedGreenRisk1.imageset/selectedGreenRisk1@3x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/selectedGreenRisk2.imageset/Contents.json b/TesteiOS/TesteiOS/Assets.xcassets/selectedGreenRisk2.imageset/Contents.json new file mode 100644 index 00000000..97ae23ac --- /dev/null +++ b/TesteiOS/TesteiOS/Assets.xcassets/selectedGreenRisk2.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "selectedGreenRisk2.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "selectedGreenRisk2@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "selectedGreenRisk2@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TesteiOS/TesteiOS/Assets.xcassets/selectedGreenRisk2.imageset/selectedGreenRisk2.png b/TesteiOS/TesteiOS/Assets.xcassets/selectedGreenRisk2.imageset/selectedGreenRisk2.png new file mode 100644 index 00000000..479415e3 Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/selectedGreenRisk2.imageset/selectedGreenRisk2.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/selectedGreenRisk2.imageset/selectedGreenRisk2@2x.png b/TesteiOS/TesteiOS/Assets.xcassets/selectedGreenRisk2.imageset/selectedGreenRisk2@2x.png new file mode 100644 index 00000000..493a9096 Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/selectedGreenRisk2.imageset/selectedGreenRisk2@2x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/selectedGreenRisk2.imageset/selectedGreenRisk2@3x.png b/TesteiOS/TesteiOS/Assets.xcassets/selectedGreenRisk2.imageset/selectedGreenRisk2@3x.png new file mode 100644 index 00000000..070fce81 Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/selectedGreenRisk2.imageset/selectedGreenRisk2@3x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/selectedOrangeRisk3.imageset/Contents.json b/TesteiOS/TesteiOS/Assets.xcassets/selectedOrangeRisk3.imageset/Contents.json new file mode 100644 index 00000000..6ca511f9 --- /dev/null +++ b/TesteiOS/TesteiOS/Assets.xcassets/selectedOrangeRisk3.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "selectedOrangeRisk3.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "selectedOrangeRisk3@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "selectedOrangeRisk3@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TesteiOS/TesteiOS/Assets.xcassets/selectedOrangeRisk3.imageset/selectedOrangeRisk3.png b/TesteiOS/TesteiOS/Assets.xcassets/selectedOrangeRisk3.imageset/selectedOrangeRisk3.png new file mode 100644 index 00000000..deb9b8ae Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/selectedOrangeRisk3.imageset/selectedOrangeRisk3.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/selectedOrangeRisk3.imageset/selectedOrangeRisk3@2x.png b/TesteiOS/TesteiOS/Assets.xcassets/selectedOrangeRisk3.imageset/selectedOrangeRisk3@2x.png new file mode 100644 index 00000000..e53d5c81 Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/selectedOrangeRisk3.imageset/selectedOrangeRisk3@2x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/selectedOrangeRisk3.imageset/selectedOrangeRisk3@3x.png b/TesteiOS/TesteiOS/Assets.xcassets/selectedOrangeRisk3.imageset/selectedOrangeRisk3@3x.png new file mode 100644 index 00000000..dc637c9b Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/selectedOrangeRisk3.imageset/selectedOrangeRisk3@3x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/selectedOrangeRisk4.imageset/Contents.json b/TesteiOS/TesteiOS/Assets.xcassets/selectedOrangeRisk4.imageset/Contents.json new file mode 100644 index 00000000..772e1b3c --- /dev/null +++ b/TesteiOS/TesteiOS/Assets.xcassets/selectedOrangeRisk4.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "selectedOrangeRisk4.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "selectedOrangeRisk4@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "selectedOrangeRisk4@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TesteiOS/TesteiOS/Assets.xcassets/selectedOrangeRisk4.imageset/selectedOrangeRisk4.png b/TesteiOS/TesteiOS/Assets.xcassets/selectedOrangeRisk4.imageset/selectedOrangeRisk4.png new file mode 100644 index 00000000..1cf3993d Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/selectedOrangeRisk4.imageset/selectedOrangeRisk4.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/selectedOrangeRisk4.imageset/selectedOrangeRisk4@2x.png b/TesteiOS/TesteiOS/Assets.xcassets/selectedOrangeRisk4.imageset/selectedOrangeRisk4@2x.png new file mode 100644 index 00000000..3d03a674 Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/selectedOrangeRisk4.imageset/selectedOrangeRisk4@2x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/selectedOrangeRisk4.imageset/selectedOrangeRisk4@3x.png b/TesteiOS/TesteiOS/Assets.xcassets/selectedOrangeRisk4.imageset/selectedOrangeRisk4@3x.png new file mode 100644 index 00000000..ece3a47a Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/selectedOrangeRisk4.imageset/selectedOrangeRisk4@3x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/selectedRedRisk5.imageset/Contents.json b/TesteiOS/TesteiOS/Assets.xcassets/selectedRedRisk5.imageset/Contents.json new file mode 100644 index 00000000..12ecee32 --- /dev/null +++ b/TesteiOS/TesteiOS/Assets.xcassets/selectedRedRisk5.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "selectedRedRisk5.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "selectedRedRisk5@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "selectedRedRisk5@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TesteiOS/TesteiOS/Assets.xcassets/selectedRedRisk5.imageset/selectedRedRisk5.png b/TesteiOS/TesteiOS/Assets.xcassets/selectedRedRisk5.imageset/selectedRedRisk5.png new file mode 100644 index 00000000..941a7156 Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/selectedRedRisk5.imageset/selectedRedRisk5.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/selectedRedRisk5.imageset/selectedRedRisk5@2x.png b/TesteiOS/TesteiOS/Assets.xcassets/selectedRedRisk5.imageset/selectedRedRisk5@2x.png new file mode 100644 index 00000000..2bc381fe Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/selectedRedRisk5.imageset/selectedRedRisk5@2x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/selectedRedRisk5.imageset/selectedRedRisk5@3x.png b/TesteiOS/TesteiOS/Assets.xcassets/selectedRedRisk5.imageset/selectedRedRisk5@3x.png new file mode 100644 index 00000000..089e9eda Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/selectedRedRisk5.imageset/selectedRedRisk5@3x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/share.imageset/Contents.json b/TesteiOS/TesteiOS/Assets.xcassets/share.imageset/Contents.json new file mode 100644 index 00000000..0fb5038b --- /dev/null +++ b/TesteiOS/TesteiOS/Assets.xcassets/share.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "share@1x.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "share@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "share@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TesteiOS/TesteiOS/Assets.xcassets/share.imageset/share@1x.png b/TesteiOS/TesteiOS/Assets.xcassets/share.imageset/share@1x.png new file mode 100644 index 00000000..a214bd01 Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/share.imageset/share@1x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/share.imageset/share@2x.png b/TesteiOS/TesteiOS/Assets.xcassets/share.imageset/share@2x.png new file mode 100644 index 00000000..91439b86 Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/share.imageset/share@2x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/share.imageset/share@3x.png b/TesteiOS/TesteiOS/Assets.xcassets/share.imageset/share@3x.png new file mode 100644 index 00000000..bda2532b Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/share.imageset/share@3x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/unchecked.imageset/Contents.json b/TesteiOS/TesteiOS/Assets.xcassets/unchecked.imageset/Contents.json new file mode 100644 index 00000000..41919e25 --- /dev/null +++ b/TesteiOS/TesteiOS/Assets.xcassets/unchecked.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "unchecked.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "unchecked@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "unchecked@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TesteiOS/TesteiOS/Assets.xcassets/unchecked.imageset/unchecked.png b/TesteiOS/TesteiOS/Assets.xcassets/unchecked.imageset/unchecked.png new file mode 100644 index 00000000..674f5918 Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/unchecked.imageset/unchecked.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/unchecked.imageset/unchecked@2x.png b/TesteiOS/TesteiOS/Assets.xcassets/unchecked.imageset/unchecked@2x.png new file mode 100644 index 00000000..90acdb28 Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/unchecked.imageset/unchecked@2x.png differ diff --git a/TesteiOS/TesteiOS/Assets.xcassets/unchecked.imageset/unchecked@3x.png b/TesteiOS/TesteiOS/Assets.xcassets/unchecked.imageset/unchecked@3x.png new file mode 100644 index 00000000..263484aa Binary files /dev/null and b/TesteiOS/TesteiOS/Assets.xcassets/unchecked.imageset/unchecked@3x.png differ diff --git a/TesteiOS/TesteiOS/Info.plist b/TesteiOS/TesteiOS/Info.plist new file mode 100644 index 00000000..16be3b68 --- /dev/null +++ b/TesteiOS/TesteiOS/Info.plist @@ -0,0 +1,45 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/TesteiOS/TesteiOS/Resource/fonts/Din/DINEngschriftStd.otf b/TesteiOS/TesteiOS/Resource/fonts/Din/DINEngschriftStd.otf new file mode 100755 index 00000000..ae85f8ee Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/fonts/Din/DINEngschriftStd.otf differ diff --git a/TesteiOS/TesteiOS/Resource/fonts/Din/DINMittelschriftStd.otf b/TesteiOS/TesteiOS/Resource/fonts/Din/DINMittelschriftStd.otf new file mode 100755 index 00000000..9a6e0d4f Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/fonts/Din/DINMittelschriftStd.otf differ diff --git a/TesteiOS/TesteiOS/Resource/fonts/Din/DINNeuzeitGroteskStd-BdCond.otf b/TesteiOS/TesteiOS/Resource/fonts/Din/DINNeuzeitGroteskStd-BdCond.otf new file mode 100755 index 00000000..1da42b06 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/fonts/Din/DINNeuzeitGroteskStd-BdCond.otf differ diff --git a/TesteiOS/TesteiOS/Resource/fonts/Din/DINNeuzeitGroteskStd-Light.otf b/TesteiOS/TesteiOS/Resource/fonts/Din/DINNeuzeitGroteskStd-Light.otf new file mode 100755 index 00000000..0cda2e5b Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/fonts/Din/DINNeuzeitGroteskStd-Light.otf differ diff --git a/TesteiOS/TesteiOS/Resource/fonts/Din/DINPro-Black.otf b/TesteiOS/TesteiOS/Resource/fonts/Din/DINPro-Black.otf new file mode 100755 index 00000000..2092a7bb Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/fonts/Din/DINPro-Black.otf differ diff --git a/TesteiOS/TesteiOS/Resource/fonts/Din/DINPro-Bold.otf b/TesteiOS/TesteiOS/Resource/fonts/Din/DINPro-Bold.otf new file mode 100755 index 00000000..7c839536 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/fonts/Din/DINPro-Bold.otf differ diff --git a/TesteiOS/TesteiOS/Resource/fonts/Din/DINPro-Light.otf b/TesteiOS/TesteiOS/Resource/fonts/Din/DINPro-Light.otf new file mode 100755 index 00000000..8a7f085a Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/fonts/Din/DINPro-Light.otf differ diff --git a/TesteiOS/TesteiOS/Resource/fonts/Din/DINPro-Medium.otf b/TesteiOS/TesteiOS/Resource/fonts/Din/DINPro-Medium.otf new file mode 100755 index 00000000..b4608d06 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/fonts/Din/DINPro-Medium.otf differ diff --git a/TesteiOS/TesteiOS/Resource/fonts/Din/DINPro-Regular.otf b/TesteiOS/TesteiOS/Resource/fonts/Din/DINPro-Regular.otf new file mode 100755 index 00000000..84d57abb Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/fonts/Din/DINPro-Regular.otf differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/Risk1lightGreen.png b/TesteiOS/TesteiOS/Resource/images/assets/Risk1lightGreen.png new file mode 100755 index 00000000..029e6bd7 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/Risk1lightGreen.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/Risk1lightGreen@2x.png b/TesteiOS/TesteiOS/Resource/images/assets/Risk1lightGreen@2x.png new file mode 100755 index 00000000..df8d6cf5 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/Risk1lightGreen@2x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/Risk1lightGreen@3x.png b/TesteiOS/TesteiOS/Resource/images/assets/Risk1lightGreen@3x.png new file mode 100755 index 00000000..203c7c17 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/Risk1lightGreen@3x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/Risk2green.png b/TesteiOS/TesteiOS/Resource/images/assets/Risk2green.png new file mode 100755 index 00000000..1a62f2dc Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/Risk2green.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/Risk2green@2x.png b/TesteiOS/TesteiOS/Resource/images/assets/Risk2green@2x.png new file mode 100755 index 00000000..0e159f77 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/Risk2green@2x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/Risk2green@3x.png b/TesteiOS/TesteiOS/Resource/images/assets/Risk2green@3x.png new file mode 100755 index 00000000..11ddc192 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/Risk2green@3x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/Risk3yellow.png b/TesteiOS/TesteiOS/Resource/images/assets/Risk3yellow.png new file mode 100755 index 00000000..3b7455b4 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/Risk3yellow.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/Risk3yellow@2x.png b/TesteiOS/TesteiOS/Resource/images/assets/Risk3yellow@2x.png new file mode 100755 index 00000000..44c11673 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/Risk3yellow@2x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/Risk3yellow@3x.png b/TesteiOS/TesteiOS/Resource/images/assets/Risk3yellow@3x.png new file mode 100755 index 00000000..99256b07 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/Risk3yellow@3x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/Risk4lightOrange.png b/TesteiOS/TesteiOS/Resource/images/assets/Risk4lightOrange.png new file mode 100755 index 00000000..579983b8 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/Risk4lightOrange.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/Risk4lightOrange@2x.png b/TesteiOS/TesteiOS/Resource/images/assets/Risk4lightOrange@2x.png new file mode 100755 index 00000000..dcd70529 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/Risk4lightOrange@2x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/Risk4lightOrange@3x.png b/TesteiOS/TesteiOS/Resource/images/assets/Risk4lightOrange@3x.png new file mode 100755 index 00000000..e3fcb506 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/Risk4lightOrange@3x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/Risk5Orange.png b/TesteiOS/TesteiOS/Resource/images/assets/Risk5Orange.png new file mode 100755 index 00000000..2697c79d Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/Risk5Orange.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/Risk5Orange@2x.png b/TesteiOS/TesteiOS/Resource/images/assets/Risk5Orange@2x.png new file mode 100755 index 00000000..b0e5803c Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/Risk5Orange@2x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/Risk5Orange@3x.png b/TesteiOS/TesteiOS/Resource/images/assets/Risk5Orange@3x.png new file mode 100755 index 00000000..b9a37bbe Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/Risk5Orange@3x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/Spearador.png b/TesteiOS/TesteiOS/Resource/images/assets/Spearador.png new file mode 100755 index 00000000..42738412 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/Spearador.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/Spearador@2x.png b/TesteiOS/TesteiOS/Resource/images/assets/Spearador@2x.png new file mode 100755 index 00000000..7ded029d Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/Spearador@2x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/Spearador@3x.png b/TesteiOS/TesteiOS/Resource/images/assets/Spearador@3x.png new file mode 100755 index 00000000..d48143c7 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/Spearador@3x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/arrowDown@1x.png b/TesteiOS/TesteiOS/Resource/images/assets/arrowDown@1x.png new file mode 100644 index 00000000..dfeb76c0 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/arrowDown@1x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/arrowDown@2x.png b/TesteiOS/TesteiOS/Resource/images/assets/arrowDown@2x.png new file mode 100644 index 00000000..1219c0fa Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/arrowDown@2x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/arrowDown@3x.png b/TesteiOS/TesteiOS/Resource/images/assets/arrowDown@3x.png new file mode 100644 index 00000000..80187b04 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/arrowDown@3x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/baixar.png b/TesteiOS/TesteiOS/Resource/images/assets/baixar.png new file mode 100755 index 00000000..af9ff1bd Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/baixar.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/baixar@2x.png b/TesteiOS/TesteiOS/Resource/images/assets/baixar@2x.png new file mode 100755 index 00000000..7a272430 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/baixar@2x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/baixar@3x.png b/TesteiOS/TesteiOS/Resource/images/assets/baixar@3x.png new file mode 100755 index 00000000..6b27654e Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/baixar@3x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/checked.png b/TesteiOS/TesteiOS/Resource/images/assets/checked.png new file mode 100755 index 00000000..560d49a0 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/checked.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/checked@2x.png b/TesteiOS/TesteiOS/Resource/images/assets/checked@2x.png new file mode 100755 index 00000000..b7ea965b Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/checked@2x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/checked@3x.png b/TesteiOS/TesteiOS/Resource/images/assets/checked@3x.png new file mode 100755 index 00000000..6ace6a7b Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/checked@3x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/download@1x.png b/TesteiOS/TesteiOS/Resource/images/assets/download@1x.png new file mode 100644 index 00000000..3c16dcba Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/download@1x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/download@2x.png b/TesteiOS/TesteiOS/Resource/images/assets/download@2x.png new file mode 100644 index 00000000..4da26871 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/download@2x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/download@3x.png b/TesteiOS/TesteiOS/Resource/images/assets/download@3x.png new file mode 100644 index 00000000..03332568 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/download@3x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/selectedGreenRisk1.png b/TesteiOS/TesteiOS/Resource/images/assets/selectedGreenRisk1.png new file mode 100755 index 00000000..1b1c4205 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/selectedGreenRisk1.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/selectedGreenRisk1@2x.png b/TesteiOS/TesteiOS/Resource/images/assets/selectedGreenRisk1@2x.png new file mode 100755 index 00000000..de607804 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/selectedGreenRisk1@2x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/selectedGreenRisk1@3x.png b/TesteiOS/TesteiOS/Resource/images/assets/selectedGreenRisk1@3x.png new file mode 100755 index 00000000..35478811 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/selectedGreenRisk1@3x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/selectedGreenRisk2.png b/TesteiOS/TesteiOS/Resource/images/assets/selectedGreenRisk2.png new file mode 100755 index 00000000..479415e3 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/selectedGreenRisk2.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/selectedGreenRisk2@2x.png b/TesteiOS/TesteiOS/Resource/images/assets/selectedGreenRisk2@2x.png new file mode 100755 index 00000000..493a9096 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/selectedGreenRisk2@2x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/selectedGreenRisk2@3x.png b/TesteiOS/TesteiOS/Resource/images/assets/selectedGreenRisk2@3x.png new file mode 100755 index 00000000..070fce81 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/selectedGreenRisk2@3x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/selectedOrangeRisk3.png b/TesteiOS/TesteiOS/Resource/images/assets/selectedOrangeRisk3.png new file mode 100755 index 00000000..deb9b8ae Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/selectedOrangeRisk3.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/selectedOrangeRisk3@2x.png b/TesteiOS/TesteiOS/Resource/images/assets/selectedOrangeRisk3@2x.png new file mode 100755 index 00000000..e53d5c81 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/selectedOrangeRisk3@2x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/selectedOrangeRisk3@3x.png b/TesteiOS/TesteiOS/Resource/images/assets/selectedOrangeRisk3@3x.png new file mode 100755 index 00000000..dc637c9b Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/selectedOrangeRisk3@3x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/selectedOrangeRisk4.png b/TesteiOS/TesteiOS/Resource/images/assets/selectedOrangeRisk4.png new file mode 100755 index 00000000..1cf3993d Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/selectedOrangeRisk4.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/selectedOrangeRisk4@2x.png b/TesteiOS/TesteiOS/Resource/images/assets/selectedOrangeRisk4@2x.png new file mode 100755 index 00000000..3d03a674 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/selectedOrangeRisk4@2x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/selectedOrangeRisk4@3x.png b/TesteiOS/TesteiOS/Resource/images/assets/selectedOrangeRisk4@3x.png new file mode 100755 index 00000000..ece3a47a Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/selectedOrangeRisk4@3x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/selectedRedRisk5.png b/TesteiOS/TesteiOS/Resource/images/assets/selectedRedRisk5.png new file mode 100755 index 00000000..941a7156 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/selectedRedRisk5.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/selectedRedRisk5@2x.png b/TesteiOS/TesteiOS/Resource/images/assets/selectedRedRisk5@2x.png new file mode 100755 index 00000000..2bc381fe Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/selectedRedRisk5@2x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/selectedRedRisk5@3x.png b/TesteiOS/TesteiOS/Resource/images/assets/selectedRedRisk5@3x.png new file mode 100755 index 00000000..089e9eda Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/selectedRedRisk5@3x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/share@1x.png b/TesteiOS/TesteiOS/Resource/images/assets/share@1x.png new file mode 100644 index 00000000..a214bd01 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/share@1x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/share@2x.png b/TesteiOS/TesteiOS/Resource/images/assets/share@2x.png new file mode 100644 index 00000000..91439b86 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/share@2x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/share@3x.png b/TesteiOS/TesteiOS/Resource/images/assets/share@3x.png new file mode 100644 index 00000000..bda2532b Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/share@3x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/unchecked.png b/TesteiOS/TesteiOS/Resource/images/assets/unchecked.png new file mode 100755 index 00000000..674f5918 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/unchecked.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/unchecked@2x.png b/TesteiOS/TesteiOS/Resource/images/assets/unchecked@2x.png new file mode 100755 index 00000000..90acdb28 Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/unchecked@2x.png differ diff --git a/TesteiOS/TesteiOS/Resource/images/assets/unchecked@3x.png b/TesteiOS/TesteiOS/Resource/images/assets/unchecked@3x.png new file mode 100755 index 00000000..263484aa Binary files /dev/null and b/TesteiOS/TesteiOS/Resource/images/assets/unchecked@3x.png differ diff --git a/TesteiOS/TesteiOS/ViewController.swift b/TesteiOS/TesteiOS/ViewController.swift new file mode 100644 index 00000000..7db83cc0 --- /dev/null +++ b/TesteiOS/TesteiOS/ViewController.swift @@ -0,0 +1,20 @@ +// +// ViewController.swift +// TesteiOS +// +// Created by anderson.jesus.silva on 06/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import UIKit + +class ViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view. + } + + +} + diff --git a/TesteiOS/TesteiOSTests/DetailTestCase.swift b/TesteiOS/TesteiOSTests/DetailTestCase.swift new file mode 100644 index 00000000..7bf5d2f7 --- /dev/null +++ b/TesteiOS/TesteiOSTests/DetailTestCase.swift @@ -0,0 +1,49 @@ +// +// DetailTestCase.swift +// TesteiOSTests +// +// Created by anderson.jesus.silva on 09/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import XCTest + +class DetailTestCase: XCTestCase { + + var provider:DetailProvider! + + override func setUp() { + // Put setup code here. This method is called before the invocation of each test method in the class. + provider = DetailProvider() + // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false + + // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method. + XCUIApplication().launch() + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. + } + + override func tearDown() { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testRequestSuccess() { + let teste = expectation(description: "Inicio do teste") + self.provider.getDetails { (baseClass, error) in + XCTAssertNotNil(baseClass) + teste.fulfill() + } + waitForExpectations(timeout: 40.0) + } + + func testRequestFailed() { + let teste = expectation(description: "Inicio do teste") + self.provider.getDetails { (baseClass, error) in + XCTAssertNotNil(error) + teste.fulfill() + } + waitForExpectations(timeout: 40.0) + } + +} diff --git a/TesteiOS/TesteiOSTests/FormTestCase.swift b/TesteiOS/TesteiOSTests/FormTestCase.swift new file mode 100644 index 00000000..25f7b2a6 --- /dev/null +++ b/TesteiOS/TesteiOSTests/FormTestCase.swift @@ -0,0 +1,71 @@ +// +// FormTestCase.swift +// TesteiOSTests +// +// Created by anderson.jesus.silva on 09/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import XCTest + +class FormTestCase: XCTestCase { + + var provider:FormProvider! + + override func setUp() { + // Put setup code here. This method is called before the invocation of each test method in the class. + + provider = FormProvider() + // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false + + // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method. + XCUIApplication().launch() + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. + } + + override func tearDown() { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() { + // Use recording to get started writing UI tests. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testRequestSuccess() { + + let teste = expectation(description: "Inicio do teste") + + self.provider.getCellForm { (cells, error) in + guard error == nil else { + print("error") + return + } + + guard cells != nil else { + return + } + + if let cells = cells, let listCells = cells.cellsList { + XCTAssertNotEqual(listCells.count, 0) + teste.fulfill() + } + } + waitForExpectations(timeout: 40.0) + + } + + func testRequestFailed() { + + let teste = expectation(description: "Inicio do teste") + + self.provider.getCellForm { (cells, error) in + XCTAssertNotNil(error) + teste.fulfill() + } + waitForExpectations(timeout: 40.0) + } + +} diff --git a/TesteiOS/TesteiOSTests/Info.plist b/TesteiOS/TesteiOSTests/Info.plist new file mode 100644 index 00000000..6c40a6cd --- /dev/null +++ b/TesteiOS/TesteiOSTests/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/TesteiOS/TesteiOSUITests/Info.plist b/TesteiOS/TesteiOSUITests/Info.plist new file mode 100644 index 00000000..6c40a6cd --- /dev/null +++ b/TesteiOS/TesteiOSUITests/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/TesteiOS/TesteiOSUITests/TesteiOSUITests.swift b/TesteiOS/TesteiOSUITests/TesteiOSUITests.swift new file mode 100644 index 00000000..b33c8696 --- /dev/null +++ b/TesteiOS/TesteiOSUITests/TesteiOSUITests.swift @@ -0,0 +1,34 @@ +// +// TesteiOSUITests.swift +// TesteiOSUITests +// +// Created by anderson.jesus.silva on 06/05/19. +// Copyright © 2019 anderson.jesus.silva. All rights reserved. +// + +import XCTest + +class TesteiOSUITests: XCTestCase { + + override func setUp() { + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false + + // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method. + XCUIApplication().launch() + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. + } + + override func tearDown() { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() { + // Use recording to get started writing UI tests. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + +} diff --git a/images/Rectangle@1x.png b/images/Rectangle@1x.png new file mode 100644 index 00000000..54b116ab Binary files /dev/null and b/images/Rectangle@1x.png differ diff --git a/images/Rectangle@2x.png b/images/Rectangle@2x.png new file mode 100644 index 00000000..7efe5649 Binary files /dev/null and b/images/Rectangle@2x.png differ diff --git a/images/Rectangle@3x.png b/images/Rectangle@3x.png new file mode 100644 index 00000000..1587ca7a Binary files /dev/null and b/images/Rectangle@3x.png differ diff --git a/images/arrowDown@1x.png b/images/arrowDown@1x.png new file mode 100644 index 00000000..dfeb76c0 Binary files /dev/null and b/images/arrowDown@1x.png differ diff --git a/images/arrowDown@2x.png b/images/arrowDown@2x.png new file mode 100644 index 00000000..1219c0fa Binary files /dev/null and b/images/arrowDown@2x.png differ diff --git a/images/arrowDown@3x.png b/images/arrowDown@3x.png new file mode 100644 index 00000000..80187b04 Binary files /dev/null and b/images/arrowDown@3x.png differ diff --git a/images/checkIn@1x.png b/images/checkIn@1x.png new file mode 100644 index 00000000..be85a2e6 Binary files /dev/null and b/images/checkIn@1x.png differ diff --git a/images/checkIn@2x.png b/images/checkIn@2x.png new file mode 100644 index 00000000..fa3f552b Binary files /dev/null and b/images/checkIn@2x.png differ diff --git a/images/checkIn@3x.png b/images/checkIn@3x.png new file mode 100644 index 00000000..90acdb28 Binary files /dev/null and b/images/checkIn@3x.png differ diff --git a/images/download@1x.png b/images/download@1x.png new file mode 100644 index 00000000..3c16dcba Binary files /dev/null and b/images/download@1x.png differ diff --git a/images/download@2x.png b/images/download@2x.png new file mode 100644 index 00000000..4da26871 Binary files /dev/null and b/images/download@2x.png differ diff --git a/images/download@3x.png b/images/download@3x.png new file mode 100644 index 00000000..03332568 Binary files /dev/null and b/images/download@3x.png differ diff --git a/images/share@1x.png b/images/share@1x.png new file mode 100644 index 00000000..a214bd01 Binary files /dev/null and b/images/share@1x.png differ diff --git a/images/share@2x.png b/images/share@2x.png new file mode 100644 index 00000000..91439b86 Binary files /dev/null and b/images/share@2x.png differ diff --git a/images/share@3x.png b/images/share@3x.png new file mode 100644 index 00000000..bda2532b Binary files /dev/null and b/images/share@3x.png differ diff --git a/images/teste/Rectangle 2 Copy 5.png b/images/teste/Rectangle 2 Copy 5.png new file mode 100644 index 00000000..b0e5803c Binary files /dev/null and b/images/teste/Rectangle 2 Copy 5.png differ diff --git a/images/teste/Rectangle 2 Copy 6.png b/images/teste/Rectangle 2 Copy 6.png new file mode 100644 index 00000000..3d03a674 Binary files /dev/null and b/images/teste/Rectangle 2 Copy 6.png differ diff --git a/images/teste/Rectangle 2 Copy 7.png b/images/teste/Rectangle 2 Copy 7.png new file mode 100644 index 00000000..44c11673 Binary files /dev/null and b/images/teste/Rectangle 2 Copy 7.png differ diff --git a/images/teste/Rectangle 2 Copy 8.png b/images/teste/Rectangle 2 Copy 8.png new file mode 100644 index 00000000..0e159f77 Binary files /dev/null and b/images/teste/Rectangle 2 Copy 8.png differ diff --git a/images/teste/Rectangle 2 Copy 9.png b/images/teste/Rectangle 2 Copy 9.png new file mode 100644 index 00000000..df8d6cf5 Binary files /dev/null and b/images/teste/Rectangle 2 Copy 9.png differ