Untitled
unknown
plain_text
3 years ago
17 kB
14
Indexable
//
// AddressSelectionView.swift
// Garageworks-iOS-Revamp
//
// Created by mac on 16/11/22.
//
import SwiftUI
struct AddressSelectionFragmentView: View {
@State var zoom : Float = 15.0
@ObservedObject private var viewModel = AddressSelectionObserver()
@StateObject private var updateAddressObserver: UpdateCustomerAddressObserver = UpdateCustomerAddressObserver()
@StateObject var getCustDetails: LoginObserver = LoginObserver()
@State var currentLocation : Bool = false
@State var address : (text : String,location : String) = ("","")
@State var shouldShowAddressView = false
@State private var sublocality = ""
@State private var name = ""
@State private var email = ""
@State private var alternateMobile = ""
@State private var isShowingAddAddressView = false
@State var callAddAddress: Int? = nil
@Environment(\.dismiss) var dismiss
var body: some View {
// NavigationView{
GeometryReader{ geometry in
VStack{
NavigationLink(destination: AddAddressView().navigationBarHidden(true)){
HStack(spacing:20){
Image("Vector 1")
.resizable()
.frame(width: 8, height: 15)
.padding(.leading,15)
.foregroundColor(Color.init(hex: Colors.color_gr2))
Text(Strings.label_Please_select_your_address)
.font(Font.custom(Fonts.product_regular, size: 16))
.foregroundColor(Color.init(hex: Colors.color_gr2))
Spacer()
}
.frame(width:geometry.size.width,alignment: .topLeading)
.background(.white)
.padding(.leading,25)
.padding(.bottom,20)
}
ZStack{
ZStack(alignment: .top){
GoogleMapsView(zoom : $zoom,location: $viewModel.location, showCurrentLocation: $currentLocation, placeAddress: $viewModel.placeAddress, placePincode: $viewModel.placePincode, placeCity: $viewModel.placeCity, placeArea: $viewModel.placeArea, currentLocation: $viewModel.location)
// .frame(width: geometry.size.width, height: geometry.size.height*0.7)
.onAppear{
viewModel.fetchAddress()
}
.background()
.onChange(of: viewModel.placePincode, perform: { _ in
print("Value Changed!")
viewModel.searchArea(pincode: viewModel.placePincode)
})
VStack(alignment: .trailing){
NavigationLink(destination: PlaceView(location: $viewModel.location)) {
HStack{
Image("search")
.foregroundColor(.black)
Text("Search Places")
.foregroundColor(Color.init(hex: Colors.color_3f))
.font(Font.custom(Fonts.product_medium, size: 12))
}
.padding(10)
.background(.white)
.clipShape(RoundedRectangle(cornerRadius: 20))
.padding(.leading,230)
}
// .navigationBarTitle("")
// .navigationBarBackButtonHidden(true)
// .navigationBarHidden(true)
Spacer()
Button{
currentLocation.toggle()
currentLocation = true
// print("GPS")
}label: {
Image("gps")
.padding(10)
.background(.orange)
.frame(alignment: .trailing)
}.clipShape(Circle())
VStack(spacing:1){
Button{
if(zoom<10){
zoom = 13
}
zoom = zoom + 1
// print("add ",zoom)
}label: {
Image("add")
} .padding(10)
.background(.white)
.cornerRadius(20, corners: [.topLeft, .topRight])
Button{
// print("minus",zoom)
if(zoom>22){
zoom = 21
}
if(zoom >= 10){
zoom = zoom - 1
}
}label: {
Image("minus")
} .padding(10)
.background(.white)
.cornerRadius(20, corners: [.bottomLeft, .bottomRight])
}
.padding(.bottom,70)
}
.frame(width: geometry.size.width, height: geometry.size.height*0.7)
.padding(15)
}
.frame(width: geometry.size.width, height: geometry.size.height*0.96,alignment: .top)
.cornerRadius(27, corners: [.topLeft, .topRight])
.background(.white)
//MARK : Address show
ZStack{
Spacer()
// .frame(width: geometry.size.width, height: geometry.size.height)
VStack(){
Text("Your Address")
.padding()
.font(Font.custom(Fonts.product_medium, size: 15))
.foregroundColor(Color.init(hex: Colors.color_gr2))
.frame(width: geometry.size.width, alignment: .topLeading)
Text(viewModel.placeAddress)
.padding()
.foregroundColor(Color.init(hex: Colors.color_gr2))
.frame(width: geometry.size.width * 0.9, alignment: .topLeading)
.background(Color.init(hex: Colors.color_wh))
.cornerRadius(10)
.padding(.bottom,10)
if shouldShowAddressView {
VStack(spacing:10){
TextField("Flat/Building/Street", text: $sublocality)
.padding()
.foregroundColor(Color.init(hex: Colors.color_gr2))
.frame(width: geometry.size.width * 0.9, alignment: .topLeading)
.background(Color.init(hex: Colors.color_wh))
.cornerRadius(10)
Text(viewModel.placeArea)
.padding()
.foregroundColor(Color.init(hex: Colors.color_gr2))
.frame(width: geometry.size.width * 0.9, alignment:.topLeading)
.background(Color.init(hex: Colors.color_wh))
.cornerRadius(10)
TextField("Name", text: $name)
.padding()
.foregroundColor(Color.init(hex: Colors.color_gr2))
.frame(width: geometry.size.width * 0.9, alignment: .topLeading)
.background(Color.init(hex: Colors.color_wh))
.cornerRadius(10)
TextField("Email", text: $email)
.padding()
.foregroundColor(Color.init(hex: Colors.color_gr2))
.frame(width: geometry.size.width * 0.9, alignment: .topLeading)
.background(Color.init(hex: Colors.color_wh))
.cornerRadius(10)
TextField("Alternate No.", text: $alternateMobile)
.padding()
.foregroundColor(Color.init(hex: Colors.color_gr2))
.frame(width: geometry.size.width * 0.9, alignment: .topLeading)
.background(Color.init(hex: Colors.color_wh))
.cornerRadius(10)
HStack(spacing:5){
RadioButtonGroups { selected in
print("Selected work_type is: \(selected)")
UserDefaultsManager.storeSelectedWorkType(value: selected)
print(UserDefaultsManager.fetchSelectedWorkType())
}
.frame(height: 50)
.padding(.leading,10)
}
.frame(width: geometry.size.width * 0.9, alignment: .topLeading)
.background(Color.init(hex: Colors.color_wh))
.cornerRadius(10)
.padding(.bottom,10)
}
}
// VStack{
// Button(){
// print("get_area")
// areaListObserver.searchArea(pincode: viewModel.placePincode)
// if areaListObserver.isServicableArea == true{
// }
// }label: {
// NavigationLink(destination: AddAddressView().navigationBarHidden(true), tag: 1, selection: $callArea){
// NavigationLink(destination: ServiceSelectionView().navigationBarHidden(true), tag: 1, selection: $callAddAddress){
HStack{
Text(Strings.label_next)
.frame(width: geometry.size.width * 0.9, height: 50)
.font(Font.custom(Fonts.product_medium, size: 15))
.foregroundColor(Color.init(hex: Colors.color_wh))
}
.background(Color.init(hex: Colors.color_or))
.cornerRadius(10)
.disabled(!viewModel.isServicableArea)
.opacity(viewModel.isServicableArea ? 1 : 0.5)
// }
.onTapGesture {
// save area and placearea in userDefaults
if name != "" && email != ""{
DispatchQueue.main.async {
if shouldShowAddressView == true {
print("--------------updateCustomerAddress---------------")
updateAddressObserver.updateCustomerDetails(
customer_id: UserDefaultsManager.fetchCustomer()?.customer_id ?? "",
address_id: "",
address_type: UserDefaultsManager.fetchSelectedWorkType() ,
address: sublocality,
area: UserDefaultsManager.fetchSelectedArea()?.area ?? "",
city: UserDefaultsManager.fetchSelectedArea()?.city ?? "",
pincode: UserDefaultsManager.fetchSelectedArea()?.pincode ?? "",
google_map: viewModel.placeAddress,
latitude: UserDefaultsManager.fetchSelectedAreaName()?.latitude ?? "",
longitude: UserDefaultsManager.fetchSelectedAreaName()?.longitude ?? "",
gm_area_key: UserDefaultsManager.fetchSelectedArea()?.zone ?? "")
print("--------------getCustomerDetails---------------")
getCustDetails.getCustomerDetails(cust_id: UserDefaultsManager.fetchCustomer()?.customer_id ?? "")
}
dismiss()
// self.callAddAddress = 1
}
}
// UserDefaultsManager.storeSelectedArea(value: viewModel.areas!)
// debugPrint(UserDefaultsManager.fetchSelectedArea()?.area,"-------")
// UserDefaultsManager.storeGoogleMapArea(value: viewModel.placeAddress)
self.shouldShowAddressView = true
}
// }.isDetailLink(false)
Text("")
.frame(width: geometry.size.width,height: 20)
.background(Color.init(hex: Colors.color_gr))
.padding(.bottom,6)
}
.background(Color.init(hex: Colors.color_gr), ignoresSafeAreaEdges: .bottom)
.cornerRadius(27, corners: [.topLeft, .topRight])
}
.frame(width: geometry.size.width, height: geometry.size.height*0.93,alignment: .bottom)
}
.frame(width: geometry.size.width,height: geometry.size.height*0.93,alignment: .top)
}
.frame(width: geometry.size.width,height: geometry.size.height)
.background(.white)
}
.ignoresSafeArea(edges: .bottom)
.navigationBarTitle("")
.navigationBarBackButtonHidden(true)
.navigationBarHidden(true)
// }
}
}
struct AddressSelectionFragmentView_Previews: PreviewProvider {
static var previews: some View {
AddressSelectionFragmentView()
}
}
//struct GoToDashboard: View {
// var body: some View {
//// MARK: new user and Resigtered user dashboard values(area,city) update condition.
// if UserDefaultsManager.fetchIsFrom() == true{
// MainHomeView()
// }
// else{
// MakeView()
// }
// }
//}
Editor is loading...