Skip to content

Commit f2ba014

Browse files
committed
alerta tf vazio, loading cadastro, verificar se todos os campos foram preenchidos
1 parent 845d193 commit f2ba014

4 files changed

Lines changed: 32 additions & 5 deletions

File tree

AnimalsApp/AnimalsApp/Services/WebServices.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import Alamofire
1111
protocol WebServicesContract: AnyObject {
1212
var endpoint: String { get }
1313
func fetchAnimals(completion: @escaping (Result<[Animal], Error>) -> ())
14-
func registerAnimal(with parameters: [String: Any])
14+
func registerAnimal(with parameters: [String: Any], handler: @escaping (() -> Void))
1515
}
1616

1717
class WebServices: WebServicesContract {
@@ -31,10 +31,11 @@ class WebServices: WebServicesContract {
3131
}
3232
}
3333

34-
func registerAnimal(with parameters: [String: Any]) {
34+
func registerAnimal(with parameters: [String: Any], handler: @escaping (() -> Void)) {
3535
AF.request(endpoint, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: nil).validate(statusCode: 200 ..< 299).responseData { response in
3636
switch response.result {
3737
case .success(let data):
38+
handler()
3839
do {
3940
guard let jsonObject = try JSONSerialization.jsonObject(with: data) as? [String: Any] else {
4041
print("Error: Cannot convert data to JSON object")
@@ -55,6 +56,7 @@ class WebServices: WebServicesContract {
5556
return
5657
}
5758
case .failure(let error):
59+
handler()
5860
print(error)
5961
}
6062
}

AnimalsApp/AnimalsApp/View Models/RegisterViewModel.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@ struct RegisterViewModel {
1414
self.webServices = webServices
1515
}
1616

17-
func registerAnimal(with parameters: [String: Any]) {
18-
webServices.registerAnimal(with: parameters)
17+
func registerAnimal(with parameters: [String: Any], handler: @escaping (() -> Void)) {
18+
webServices.registerAnimal(with: parameters) {
19+
handler()
20+
}
1921
}
2022
}

AnimalsApp/AnimalsApp/Views/RegisterViewController/RegisterViewController.swift

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,28 @@ class RegisterViewController: UIViewController {
2626
@IBOutlet weak var textFieldSpecie: UITextField!
2727
@IBOutlet weak var textFieldAge: UITextField!
2828
@IBOutlet weak var buttonRegister: UIButton!
29+
@IBOutlet weak var activityIndicator: UIActivityIndicatorView!
2930

3031
// MARK: Overrides
3132
override func viewDidLoad() {
3233
super.viewDidLoad()
3334
setupUI()
3435
setNavigationItems()
3536
delegateTextField()
37+
activityIndicator.hidesWhenStopped = true
3638
}
3739

3840
// MARK: Actions
3941
@IBAction func handlerButtonRegister(_ sender: Any) {
42+
if textFieldName.text == "" || textFieldImageLink.text == "" || textFieldDescription.text == "" || textFieldSpecie.text == "" || textFieldAge.text == "" {
43+
showAlerts(alertTitle: "Erro", alertMessage: "Preencha todos os dados")
44+
return
45+
}
46+
activityIndicator.startAnimating()
4047
setParameters()
41-
registerVM.registerAnimal(with: parameters)
48+
registerVM.registerAnimal(with: parameters) {
49+
self.activityIndicator.stopAnimating()
50+
}
4251
}
4352

4453
// MARK: Methods
@@ -87,6 +96,12 @@ class RegisterViewController: UIViewController {
8796
textFieldImageLink.delegate = self
8897
self.view.addGestureRecognizer(UITapGestureRecognizer(target: self.view, action: #selector(UIView.endEditing(_:))))
8998
}
99+
100+
private func showAlerts(alertTitle: String?, alertMessage: String?) {
101+
let alert = UIAlertController(title: alertTitle, message: alertMessage, preferredStyle: .alert)
102+
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
103+
present(alert, animated: true)
104+
}
90105
}
91106

92107
extension RegisterViewController: UIGestureRecognizerDelegate, UITextFieldDelegate {

AnimalsApp/AnimalsApp/Views/RegisterViewController/RegisterViewController.xib

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
<objects>
1212
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="RegisterViewController" customModule="AnimalsApp" customModuleProvider="target">
1313
<connections>
14+
<outlet property="activityIndicator" destination="hKh-ih-WLW" id="udD-CU-nbq"/>
1415
<outlet property="buttonRegister" destination="IgQ-5e-alS" id="L9L-mM-03l"/>
1516
<outlet property="textFieldAge" destination="8vc-1n-XQI" id="ttV-kf-O7h"/>
1617
<outlet property="textFieldDescription" destination="Jyn-Gz-FpY" id="34R-ts-wvz"/>
@@ -136,13 +137,20 @@
136137
<constraint firstAttribute="trailing" secondItem="rPO-OE-UhZ" secondAttribute="trailing" id="yPe-15-Y6Q"/>
137138
</constraints>
138139
</view>
140+
<activityIndicatorView opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" style="large" translatesAutoresizingMaskIntoConstraints="NO" id="hKh-ih-WLW">
141+
<rect key="frame" x="0.0" y="0.0" width="414" height="800"/>
142+
</activityIndicatorView>
139143
</subviews>
140144
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
141145
<constraints>
142146
<constraint firstAttribute="trailing" secondItem="bId-Di-cZ3" secondAttribute="trailing" constant="13" id="9kb-aZ-MA4"/>
143147
<constraint firstAttribute="height" constant="800" id="CVi-Hk-f0s"/>
148+
<constraint firstAttribute="trailing" secondItem="hKh-ih-WLW" secondAttribute="trailing" id="DQ4-gJ-4jp"/>
144149
<constraint firstItem="bId-Di-cZ3" firstAttribute="top" secondItem="uTn-FQ-xzf" secondAttribute="top" constant="25" id="M0E-Yg-F60"/>
150+
<constraint firstItem="hKh-ih-WLW" firstAttribute="leading" secondItem="uTn-FQ-xzf" secondAttribute="leading" id="SDo-4A-TMh"/>
151+
<constraint firstItem="hKh-ih-WLW" firstAttribute="top" secondItem="uTn-FQ-xzf" secondAttribute="top" id="Xrg-G9-Y1B"/>
145152
<constraint firstItem="bId-Di-cZ3" firstAttribute="leading" secondItem="uTn-FQ-xzf" secondAttribute="leading" constant="13" id="cIf-rj-wPi"/>
153+
<constraint firstAttribute="bottom" secondItem="hKh-ih-WLW" secondAttribute="bottom" id="tBu-Rc-bEL"/>
146154
</constraints>
147155
</view>
148156
</subviews>

0 commit comments

Comments
 (0)