Untitled

 avatar
unknown
swift
2 years ago
8.9 kB
5
Indexable
//
//  MyVehiclesView.swift
//  Garageworks-iOS-Revamp
//
//  Created by DigitalFlake Kapil Dongre on 15/01/23.
//

import SwiftUI

struct MyVehiclesView: View {
    
    @Environment(\.presentationMode) var presentationMode
    
    @StateObject var  deleteVehicle = DeleteVehicleObserver()
    @StateObject var getVehicleDetail = GetVehicleDetailSingleObserver()
    @State var callmakeview:Int? = nil
    
    @State  var isShown = false
    
    @StateObject private var customerObserver: CustomerDetailsObserver = CustomerDetailsObserver()
    
    @StateObject var updateCustomerVehicleObserver: UpdateCustVehicleObserver = UpdateCustVehicleObserver(customer_id: "26", vehicle_id: UserDefaultsManager.fetchCustomerVehicle()?.vehicle_id ?? "", model: UserDefaultsManager.fetchSelectedModel()?.model_name ?? "", make: UserDefaultsManager.fetchSelectedMake()?.make_id ?? "", vehicle_category: UserDefaultsManager.fetchCustomerVehicle()?.vehicle_category ?? "", reg_no: UserDefaultsManager.fetchCustomerVehicle()?.regno ?? "", yom: UserDefaultsManager.fetchCustomerVehicle()?.yom ?? "", km_reading: UserDefaultsManager.fetchCustomerVehicle()?.km_reading ?? "")

    
    var body: some View {
        GeometryReader { geometry in
            VStack(spacing:0){
               // NavigationLink(destination:SettingsView().navigationBarHidden(true)){
                    HStack(spacing:20){
                        Image("Vector 1")
                            .padding(.leading,10)
                            .onTapGesture {
                                self.presentationMode.wrappedValue.dismiss()
                            }
                        Text("My Vehicles")
                            .font(Font.custom(Fonts.product_regular, size: 16))
                            .foregroundColor(Color.init(hex: Colors.color_gr2))
                        Spacer()
                    }
                    .frame(width:geometry.size.width,height:geometry.size.height * 0.10,alignment: .center)
                    .background(.white)
              //  }
                
                VStack(alignment: .leading) {
                    ScrollView{
                        LazyVStack{
                            ForEach(customerObserver.customer_vehicle ?? [], id:\.self){ value in
                                VStack(spacing:20){
                                    HStack(alignment:.top){
                                        AsyncImage(url: URL(string: value.vehicle_category_icon ?? ""),
                                                   content: { image in
                                            image
                                                .resizable()
                                                .aspectRatio(contentMode: .fit)
//                                                .frame(width:geometry.size.width * 0.3, height: geometry.size.height * 0.5,alignment: .topLeading)
//                                                .cornerRadius(10)

                                        },
                                                   placeholder: {
                                            ProgressView()
            //                                    .padding(.leading,20)
                                        })
                                            .frame(width: geometry.size.width * 0.16, height: 50)
                                        Text(value.make_name ?? "")
                                            .font(Font.custom(Fonts.product_regular, size: 16))
                                            .foregroundColor(Color.init(hex: Colors.color_gr2))
                                        Text(value.model_name ?? "")
                                            .font(Font.custom(Fonts.product_regular, size: 16))
                                            .foregroundColor(Color.init(hex: Colors.color_gr2))
                                        //                                                   .tag(value.id)
                                        Spacer()
                                        
                                        Image("editImage")
                                            .renderingMode(.original)
                                            .resizable()
                                            .aspectRatio(contentMode: .fit)
                                            .frame(width: 20, height: 23)
                                            .onTapGesture {

                                                isShown = true
                                                
                                                self.getVehicleDetail.getVehicleDetailSingle(customer_id: "\(UserDefaultsManager.fetchCustomer()?.customer_id! ?? "")", vehicle_id: "\(value.vehicle_id ?? "")")
                                            }
                                        Image("trash")
                                            .renderingMode(.original)
                                            .resizable()
                                            .aspectRatio(contentMode: .fit)
                                            .frame(width: 20, height: 23)
                                            .onTapGesture {
                                            print("delete vehicle of ID: \(value.vehicle_id ?? "") of customerID: \(UserDefaultsManager.fetchCustomer()?.customer_id! ?? "")")
                                                DispatchQueue.main.async {
                                                    deleteVehicle.deleteVehicle(customer_id: "\(UserDefaultsManager.fetchCustomer()?.customer_id! ?? "")", vehicle_id: "\(value.vehicle_id ?? "")")
                                                }
                                            }
//                                            .onAppear{
//                                                customerObserver.CustomerDetailsObserver(cust_id: UserDefaultsManager.fetchCustomer()?.customer_id ?? "")
//                                            }
                                    }
                                        .padding(.bottom,5)
                                    .padding(.top,5)
                                }
                                .frame(width:geometry.size.width*0.8,height: geometry.size.height * 0.13,alignment: .leading)
                                .padding()
                                .background(.white)
                                .cornerRadius(10)
                            }
//                            .frame(width:geometry.size.width, height: geometry.size.height * 0.2)
                            
                        }.frame(width:geometry.size.width)
                            .background(Color.init(hex: Colors.color_gr))
                            .cornerRadius(30, corners: [.topLeft, .topRight])
                        
                        
                    }
                    .frame(width:geometry.size.width, height:geometry.size.height * 0.75,alignment: .top)
                    
                        .padding()
                    VStack{
                        NavigationLink(destination: MakeView().navigationBarHidden(true), tag:1 ,selection: $callmakeview){
                            Text(Strings.input_add_new_vehicle)
                                .frame(width:geometry.size.width * 0.9, height: 50)
                                .foregroundColor(Color.init(hex: Colors.color_wh))
                                .background(Color.init(hex: Colors.color_or))
                                .font(Font.custom(Fonts.product_medium, size: 15))
                                .cornerRadius(10)
                            
                                .onTapGesture {
                                    self.callmakeview = 1
                                }
                        }
                    }
                        .frame(width:geometry.size.width, height:geometry.size.height * 0.1, alignment: .bottom)
                        .background(Color.init(hex: Colors.color_gr))
                        
                }.frame(width:geometry.size.width, height:geometry.size.height * 0.95,alignment: .top)
                    .background(Color.init(hex: Colors.color_gr))
                    .cornerRadius(30, corners: [.topLeft, .topRight])
            }
            .background(Color.init(hex: Colors.color_wh))
            if(isShown){
                VStack{
                    
                }
                .frame(width:UIScreen.main.bounds.width ,height:UIScreen.main.bounds.height,alignment: .top)
                .background(Color.black.opacity(0.5))
                .disabled(true)
                EditVehicleAlertView(isShown: $isShown)
            }
                
        }
    }
}

struct MyVehiclesView_Previews: PreviewProvider {
    static var previews: some View {
        MyVehiclesView()
    }
}
Editor is loading...