Untitled

 avatar
unknown
plain_text
2 years ago
17 kB
6
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...