Untitled

 avatar
unknown
swift
2 years ago
21 kB
5
Indexable
//
//  NewHomeView.swift
//  Garageworks-iOS-Revamp
//
//  Created by mac on 07/11/22.
//

import SwiftUI
import ImageSliderSwiftUI
import Alamofire
struct NewHomeView: View {
    @StateObject private var customerObserver: CustomerDetailsObserver = CustomerDetailsObserver()
    @StateObject private var homeObserver: HomeObserver = HomeObserver(city: UserDefaultsManager.fetchSelectedArea()?.city ?? "", area_id: UserDefaultsManager.fetchSelectedArea()?.id ?? "",customer_id: UserDefaultsManager.fetchCustomer()?.customer_id ?? "")
    private let threeColumnGrid = [
        GridItem(.flexible(minimum: 10)),
        GridItem(.flexible(minimum: 10)),
        GridItem(.flexible(minimum: 10))]
    @State var isMenuOpen: Bool = false
    @Binding var isShowRepairsAlertView: Bool
    @State private var selectedItem: String?
    
    
    var body: some View {
        GeometryReader { geometry in
            if homeObserver.isStatusTrue{
                VStack{
                    VStack{
                        HStack{
                            NavigationLink(destination:AddressSelectionView().navigationBarHidden(true)){
                                VStack{
                                    HStack{
                                        Text("Your Location")
                                            .font(Font.custom(Fonts.product_regular, size: 12))
                                            .foregroundColor(Color.init(hex: "#6F777A"))
                                        Image("openList")
                                            .resizable()
                                            .frame(width:8,height:4)
                                        
                                        Spacer()
                                    }
                                    // .frame(width:geometry.size.width * 0.9)
                                    .padding(.top,05)
                                    
                                    HStack{
                                        Image("location 1")
                                            .resizable()
                                            .frame(width:20,height:20)
                                        
                                        if UserDefaultsManager.fetchCustomerAddress() != nil{
                                            if(UserDefaultsManager.fetchIsAddressChanged())
                                            {
                                                Text("\(UserDefaultsManager.fetchSelectedArea()?.area ?? "") , \(UserDefaultsManager.fetchSelectedArea()?.city ?? "") ")
                                                    .font(Font.custom(Fonts.product_medium, size: 14))
                                                    .foregroundColor(Color.init(hex:"#273337"))
                                                    .padding(.leading,05)
                                                
                                            }else {
                                                Text("\(UserDefaultsManager.fetchCustomerAddress()?.area ?? "") , \(UserDefaultsManager.fetchCustomerAddress()?.city ?? "") ")
                                                    .font(Font.custom(Fonts.product_medium, size: 14))
                                                    .foregroundColor(Color.init(hex:"#273337"))
                                                    .padding(.leading,05)
                                            }
                                        } else {
                                            Text("\(UserDefaultsManager.fetchSelectedArea()?.area ?? "") , \(UserDefaultsManager.fetchSelectedArea()?.city ?? "") ")
                                                .font(Font.custom(Fonts.product_medium, size: 14))
                                                .foregroundColor(Color.init(hex:"#273337"))
                                                .padding(.leading,05)
                                        }
                                        Spacer()
                                    }
                                    //                        .padding(.bottom,05)
                                    //                            .padding([.leading],20)
                                    //                            .padding([.trailing],20)
                                }
                                //                            .onTapGesture {
                                //                                isFromDashboard = true
                                //                            }
                            }
                            
                            Image("notification1")
                                .resizable()
                                .frame(width: 24, height: 24, alignment: .trailing)
                            //.padding(.bottom,20)
                        }
                        .padding(.all)
                        

                        Image("notification1")
                            .resizable()
                            .frame(width: 24, height: 24, alignment: .trailing)
                        //.padding(.bottom,20)
                    }
                    .padding(.all)
                    
                    NavigationLink(destination: MyVehiclesView().navigationBarHidden(true)){
                        VStack{
                            HStack{
                                Text("Your Vehicles")
                                    .font(Font.custom(Fonts.product_regular, size: 16))
                                    .foregroundColor(Color.init(hex:"#0F1C21"))
                                Spacer()
                                Text("+Add")
                                    .font(Font.custom(Fonts.product_medium, size: 16))
                                    .foregroundColor(Color.init(hex:"#F08632"))
                            }
                            .frame(width:geometry.size.width * 0.88,height: 15)
                            .padding(.bottom,05)
                            HStack{
                                //                        Image("Frame 255bike")
                                //                            .renderingMode(.original)
                                //                            .resizable()
                                //                            .aspectRatio(contentMode: .fit)
                                //                            .frame(width: geometry.size.width * 0.16, height: 50)
                                
                                if (UserDefaultsManager.fetchCustomerVehicleList() != nil &&  !UserDefaultsManager.fetchCustomerVehicleList().isEmpty) {
                                   //                binding.homeToolbar.vehicleName.text = vehicle[0].vehicle_make + vehicle[0].modelName
                                    let vehicle = UserDefaultsManager.fetchSelectedCustomerVehicle()
                                    AsyncImage(url: URL(string: vehicle?.vehicle_category_icon ?? ""),
                                               content: { image in
                                        image
                                            .resizable()
                                            .aspectRatio(contentMode: .fit)
                                    }, placeholder: {})
                                    .frame(width: geometry.size.width * 0.16, height: 50)
                                    Text(("\(vehicle?.make_name ?? "") \(vehicle?.model_name ?? "")"))
                                        .font(Font.custom(Fonts.product_medium, size: 16))
                                        .foregroundColor(Color.init(hex:"#FFFFFF"))
                                        .frame(width: geometry.size.width * 0.55, height: 40, alignment: .trailing)
                                }
                                else{
                                    AsyncImage(url: URL(string: UserDefaultsManager.fetchSelectedModel()?.vehicle_category_icon ?? ""),
                                               content: { image in
                                        image
                                            .resizable()
                                            .aspectRatio(contentMode: .fit)
                                    }, placeholder: {})
                                    .frame(width: geometry.size.width * 0.16, height: 50)
                                    Text(("\(UserDefaultsManager.fetchSelectedMake()?.make_name ?? "") \(UserDefaultsManager.fetchSelectedModel()?.model_name ?? "")"))
                                        .font(Font.custom(Fonts.product_medium, size: 16))
                                        .foregroundColor(Color.init(hex:"#FFFFFF"))
                                        .frame(width: geometry.size.width * 0.55, height: 40, alignment: .trailing)
                                }
                                
//                                if UserDefaultsManager.fetchCustomerVehicle() == nil{
//                                    if UserDefaultsManager.fetchIsVehicleChanged(){
//                                        AsyncImage(url: URL(string: UserDefaultsManager.fetchCustomerVehicle()?.vehicle_category_icon ?? ""),
//                                                   content: { image in
//                                            image
//                                                .resizable()
//                                                .aspectRatio(contentMode: .fit)
//                                        },
//                                                   placeholder: {
//                                            ProgressView()
//                                        })
//                                        .frame(width: geometry.size.width * 0.16, height: 50)
//                                        Text(("\(UserDefaultsManager.fetchCustomerVehicle()?.make_name ?? "") \(UserDefaultsManager.fetchCustomerVehicle()?.model_name ?? "")"))
//                                            .font(Font.custom(Fonts.product_medium, size: 16))
//                                            .foregroundColor(Color.init(hex:"#FFFFFF"))
//                                            .frame(width: geometry.size.width * 0.55, height: 40, alignment: .trailing)
//
//
//                                    } else{
//                                        AsyncImage(url: URL(string: UserDefaultsManager.fetchSelectedCustomerVehicle()?.vehicle_category_icon ?? ""),
//                                                   content: { image in
//                                            image
//                                                .resizable()
//                                                .aspectRatio(contentMode: .fit)
//                                        },
//                                                   placeholder: {
//                                            ProgressView()
//                                        })
//                                        .frame(width: geometry.size.width * 0.16, height: 50)
//                                        Text(("\(UserDefaultsManager.fetchSelectedCustomerVehicle()?.make_name ?? "") \(UserDefaultsManager.fetchSelectedCustomerVehicle()?.model_name ?? "")"))
//                                            .font(Font.custom(Fonts.product_medium, size: 16))
//                                            .foregroundColor(Color.init(hex:"#FFFFFF"))
//                                            .frame(width: geometry.size.width * 0.55, height: 40, alignment: .trailing)
//                                    }
//                                } else {
//                                    AsyncImage(url: URL(string: UserDefaultsManager.fetchSelectedCustomerVehicle()?.vehicle_category_icon ?? ""),
//                                               content: { image in
//                                        image
//                                            .resizable()
//                                            .aspectRatio(contentMode: .fit)
//                                    },
//                                               placeholder: {
//                                        ProgressView()
//                                    })
//                                    .frame(width: geometry.size.width * 0.16, height: 50)
//                                    Text(("\(UserDefaultsManager.fetchSelectedCustomerVehicle()?.make_name ?? "") \(UserDefaultsManager.fetchSelectedCustomerVehicle()?.model_name ?? "")"))
//                                        .font(Font.custom(Fonts.product_medium, size: 16))
//                                        .foregroundColor(Color.init(hex:"#FFFFFF"))
//                                        .frame(width: geometry.size.width * 0.55, height: 40, alignment: .trailing)
//                                }
                                Image("Vector 7")
                                    .resizable()
                                    .frame(width:5,height:11)
                                
                                //                            .frame(width: geometry.size.width * 0.13, height: 40)

                            }
                        }
                        .navigationBarTitle("")
                        .navigationBarBackButtonHidden(true)
                        .navigationBarHidden(true)
                    }

                    .navigationBarTitle("")
                    .navigationBarBackButtonHidden(true)
                    .navigationBarHidden(true)
                }
                .frame(width:geometry.size.width ,height: geometry.size.height * 0.25,alignment: .bottom)
                .padding(.bottom,10)
                //                .background(.red)
                
                VStack{
                    HStack{
                            if !homeObserver.loading {
                                ImageSlider(homeObserver.sliderImages)
                                    .frame(width: geometry.size.width*0.9, height:200,alignment: .center)
                                   
                            }
                            else{
                                ProgressView()
                                    .padding(.top,100)
                            }
                        
                    }
                    .frame(width: geometry.size.width*0.9, height:230,alignment: .top)
                    //                    .background(.green)
                    //                    .padding(.top,25)
                    VStack{
                        LazyVGrid(columns: threeColumnGrid, alignment: .center) {
                            ForEach(homeObserver.homePageResponse?.services ?? [], id: \.self) { services in
                                NavigationLink(destination: ServicePackagesView().navigationBarHidden(true),tag: services.id!, selection: $selectedItem){
                                    VStack(spacing:15){
                                        AsyncImage(url: URL(string: services.service_images ?? ""),scale: 4)
                                        //                                    .padding(.top,03)
                                            .frame(width: 50, height: 50)
                                            .background(Color(hex: "#F1F2FD"))
                                            .cornerRadius(10)
                                        //                                    .shadow(radius: 0.9)
                                            .background(Color.init(hex: "#d7d7d7").blur(radius: 10))
                                        
                                        Text(services.service_name ?? "")
                                            .font(Font.custom(Fonts.product_regular, size: 14))
                                            .foregroundColor(Color.init(hex:"#0F1C21"))
                                            .frame(alignment: .center)
                                    }
                                    .onTapGesture{
                                        UserDefaultsManager.storeSelectedService(value: services)
                                        print(services.service_name ?? "","--------------id----------")
                                        if services.is_allowed == "1" && services.id != "2"{
                                            selectedItem = services.id!
                                        }
                                        else if services.is_normal_flow == false {
                                            isShowRepairsAlertView = true
                                        }
                                      
                                            else{
                                                //make lead api call
                                                //show coming soon text
                                            
                                        }
                                    }
                                }
                            }
                        }
                        .frame(width:geometry.size.width * 0.93, height:geometry.size.height * 0.50,alignment: .top)
                    }
                    .frame(width:geometry.size.width ,height:geometry.size.height * 0.83)
                    .background(Color.init(hex: "#F1F2FD"))
                    .cornerRadius(30, corners: [.topLeft, .topRight])
                }
                .background(.white)
                .onAppear{
                    customerObserver.getCustomerDetails(cust_id: UserDefaultsManager.fetchCustomer()?.customer_id ?? "")
                    UserDefaultsManager.storeSelectedComplaints(value: [])
                    UserDefaultsManager.storeSelectedLabour(value: [])
                    UserDefaultsManager.storeSelectedSpares(value: [])
                }
            }
            else {
                ProgressView()
                    .frame(width:geometry.size.width, height:geometry.size.height * 0.95,alignment: .center)
            }
            
            //            if UserDefaultsManager.fetchSelectedService()?.id == "2"{
            
            //            }
        }
        .navigationBarTitle("")
        .navigationBarBackButtonHidden(true)
        .navigationBarHidden(true)
    }
}

struct NewHomeView_Previews: PreviewProvider {
    static var previews: some View {
        NewHomeView(isShowRepairsAlertView: .constant(false))
        
    }
}

//struct DetailView: View {
//    var body: some View {
//        NavigationView{
//            VStack{
////                Text("Click here")
////                    .onTapGesture {
////                        print("-------------")
////                        print(UserDefaultsManager.fetchSelectedService()?.is_allowed)
////                        print(UserDefaultsManager.fetchSelectedService()?.id)
////                        print(UserDefaultsManager.fetchSelectedService()?.is_normal_flow)
////                        print("-------------")
////                    }
//                 if UserDefaultsManager.fetchSelectedService()?.is_allowed == "1" && UserDefaultsManager.fetchSelectedService()?.id != "2"{
//                    PerodicServiceView()
//                }
//                else if UserDefaultsManager.fetchSelectedService()?.is_normal_flow == false {
////                    RepairsView()
//                }
//               else{
//                   //leads
//                   //coming soon
//                    Text("else")
//                        .foregroundColor(.black)
//                }
//            }
//            .frame(width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)
//            .background(.red)
//        }
//    }
//}



//
//if UserDefaultsManager.fetchCustomerVehicle() != nil{
//    Text(("\(UserDefaultsManager.fetchSelectedCustomerVehicle()?.make_name ?? "") \(UserDefaultsManager.fetchSelectedCustomerVehicle()?.model_name ?? "")"))
//        .font(Font.custom(Fonts.product_medium, size: 16))
//        .foregroundColor(Color.init(hex:"#FFFFFF"))
//        .frame(width: geometry.size.width * 0.55, height: 40, alignment: .trailing)
////                                    if UserDefaultsManager.fetchCustomerVehicle() != nil {
////
////                                    } else{
////
////                                    }
//} else {
//    Text(("\(UserDefaultsManager.fetchSelectedCustomerVehicle()?.make_name ?? "") \(UserDefaultsManager.fetchSelectedCustomerVehicle()?.model_name ?? "")"))
//        .font(Font.custom(Fonts.product_medium, size: 16))
//        .foregroundColor(Color.init(hex:"#FFFFFF"))
//        .frame(width: geometry.size.width * 0.55, height: 40, alignment: .trailing)
//    Text(("\(UserDefaultsManager.fetchCustomerVehicle()?.make_name ?? "") \(UserDefaultsManager.fetchCustomerVehicle()?.model_name ?? "")"))
//        .font(Font.custom(Fonts.product_medium, size: 16))
//        .foregroundColor(Color.init(hex:"#FFFFFF"))
//        .frame(width: geometry.size.width * 0.55, height: 40, alignment: .trailing)
//}
Editor is loading...