Untitled

 avatar
unknown
swift
2 years ago
52 kB
4
Indexable
//
//  BookingDetailsView.swift
//  Garageworks-iOS-Revamp
//
//  Created by DigitalFlake Kapil Dongre on 07/01/23.
//

import SwiftUI
import Razorpay
import Foundation

struct BookingDetailsView: View {
    
    @Environment(\.presentationMode) var presentationMode
    var custId: String? = ""
    var bookId: String? = ""

    @State var isBookingDetailsOpen: Bool = false
    @State var isJobCardOpen: Bool = false
    @State var isBookingTrackingOpen: Bool = false
    @State var isPaymentDetailsOpen: Bool = false
    @State var isServiceDetailsOpen: Bool = false
    @State var isReccomendationOpen: Bool = false
 
    @State var isComplaintOpen: Bool = false
    
    @StateObject var razorPayObserver: RazorPayObserver = RazorPayObserver()
    
    @Binding var price: String?

    @State var isLinkActive = false
    
    @State private var showWebView = false
    @State var isJobCardApprovalLinkActive = false
    
    @StateObject var bookingDataObserver = BookingDatasetObserver()
    @StateObject var serviceReport = ServiceReportObserver()
    @StateObject var bookingDetailObserver: BookingDetailModelObserver = BookingDetailModelObserver(booking_id: (UserDefaults.standard.string(forKey: "booking_id")!), customer_id: (UserDefaults.standard.string(forKey: "customer_id")!))

        @State var callImageDetailView: Int? = nil
    
        @StateObject var jobCardObserver = JobCardDetailObserver()
    //= JobCardDetailObserver(booking_id: (UserDefaults.standard.string(forKey: "booking_id")!))
     @State private var showJobcardText: String = ""
     @State var showProgress : Bool = true
    
    @Binding var is_reschedule : Int
    @Binding var bookingID : String

    var body: some View {
        GeometryReader{geometry in
            //NavigationView{
            VStack{
                HStack(spacing:20){
                    Image("Vector 1")
                        .resizable()
                        .frame(width: 8, height: 15)
                        .padding(.leading,15)
                        .foregroundColor(Color.init(hex: Colors.color_gr2))
                    Text("Booking Details")
                        .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)
                .onTapGesture {
                    bookingID = bookingDataObserver.bookingDatasetObserver?.booking_id ?? ""
                    is_reschedule = bookingDataObserver.bookingDatasetObserver?.is_reschedule ?? -1
                    self.presentationMode.wrappedValue.dismiss()
                }
                
            VStack(spacing: 20){
                VStack{
                    VStack(alignment: .leading,spacing: 20){
                        HStack{
                            VStack(alignment: .leading,spacing: 5){
                                
                                Text("\(bookingDataObserver.bookingDatasetObserver?.vehicle_make ?? "") \(bookingDataObserver.bookingDatasetObserver?.vehicle_model ?? "")")
                                    .bold()
                                    .font(Font.custom(Fonts.inter, size: 12))
                                    .foregroundColor(Color.init(hex: Colors.color_or))
                                
                                Text("#\(bookingDataObserver.bookingDatasetObserver?.booking_id ?? "")")
                                    .font(Font.custom(Fonts.product_bold, size: 20))
                                    .foregroundColor(.black)
                            }
                            Spacer()
                            
                            VStack(alignment: .leading,spacing: 5){
                                
                                Text("\(bookingDataObserver.bookingDatasetObserver?.custom_status ?? "")")
                                    .foregroundColor(.white)
                                    .font(Font.custom(Fonts.product_bold, size: 12))
                                    .padding([.leading, .trailing], 12)
                                    .padding([.top, .bottom], 5)
                                    .background(Color(hex: "\(bookingDataObserver.bookingDatasetObserver?.custom_status_color ?? "")"))
                                    .cornerRadius(10)
                            }
                        }
                        .frame(width: geometry.size.width * 0.8)
                        .padding(.top)
                        .padding(.leading, 15)
                        
                        HStack{
                            VStack(alignment: .leading,spacing: 5){
                                Text("Date")
                                    .font(Font.custom(Fonts.product_regular, size: 12))
                                    .foregroundColor(Color.init(hex: Colors.color_light_gr))
                                
                                Text("\(bookingDataObserver.bookingDatasetObserver?.service_date ?? "" )")
                                    .font(Font.custom(Fonts.product_regular, size: 16))
                                    .foregroundColor(.black)
                            }
                            .frame(width: geometry.size.width * 0.43,alignment: .leading)
                           
//                            Spacer()
                            VStack(alignment: .leading,spacing: 5){
                                Text("Time")
                                    .font(Font.custom(Fonts.product_regular, size: 12))
                                    .foregroundColor(Color.init(hex: Colors.color_light_gr))
                                
                                Text("\(bookingDataObserver.bookingDatasetObserver?.time_slot ?? "" )")
                                    .font(Font.custom(Fonts.product_regular, size: 16))
                                    .foregroundColor(.black)
                            }
                            .frame(width: geometry.size.width * 0.47,alignment: .leading)
                                             

                        }
//                                            .background(.red)
                        .frame(width: geometry.size.width * 0.9,alignment: .leading)
                        .padding(.horizontal)
 
                        
                        VStack(alignment: .leading){
                            
                            HStack{
                                VStack(alignment: .leading,spacing: 5){
                                    Text("Est. Amount")
                                        .font(Font.custom(Fonts.product_regular, size: 12))
                                        .foregroundColor(Color.init(hex: Colors.color_light_gr))
                                    Text("₹ \(bookingDataObserver.bookingDatasetObserver?.estimated_amount ?? "")")
                                        .font(Font.custom(Fonts.product_regular, size: 16))
                                        .foregroundColor(.black)
                                }
                                .frame(width: geometry.size.width * 0.43,alignment: .leading)
                                

                                VStack{
                                    BookingDetailsButtonView()
                                        .padding(.bottom,20)
                                        .environmentObject(bookingDataObserver)
                                }
                                .frame(width: geometry.size.width * 0.47, alignment: .top)
                                .padding(.bottom,20)
                                .onAppear{
                                    bookingID = UserDefaults.standard.string(forKey: "booking_id")!
                                    is_reschedule = bookingDataObserver.bookingDatasetObserver?.is_reschedule ?? -1
                                }
                            }
                            .frame(width: geometry.size.width * 0.9,alignment: .leading)
                            .padding(.horizontal)
                            .padding(.bottom)
                            
                        }
                        
                    }.frame(width: geometry.size.width * 0.9,height: geometry.size.height * 0.2, alignment: .leading)
                        .padding([.top, .bottom])
                        .background()
                        .cornerRadius(10)
                    
                }
                .padding(.top, 20)
                
                    
                    VStack(alignment: .leading){
                        ScrollView{

                        //MARK: Booking Details
                        VStack{
                            Button(){
                                self.isBookingDetailsOpen.toggle()
                                self.isJobCardOpen = false
                                self.isBookingTrackingOpen = false
                                self.isPaymentDetailsOpen = false
                                self.isServiceDetailsOpen = false
                                self.isReccomendationOpen = false
                                
                            }label: {
                                HStack{
                                    Text("Booking Details")
                                        .font(Font.custom(Fonts.product_medium, size: 15))
                                        .foregroundColor(.black)

                                    Spacer()
                                    
                                    if isBookingDetailsOpen == false{
                                        Image("openList")
                                            .resizable()
                                            .frame(width: 12, height: 7)
                                    }else{
                                        Image("closeList")
                                            .resizable()
                                            .frame(width: 12, height: 7)
                                    }
                                }
                                .frame(width: geometry.size.width * 0.8)
                            }
                            .padding([.leading, .trailing, .top], 10)
                            
                            Divider()
                                .padding(.top, 10)
                            //Content of booking Details
                            if isBookingDetailsOpen{
                                VStack(alignment: .leading ,spacing: 10){
                                    HStack{
                                        Text("Name :")
                                            .font(Font.custom(Fonts.product_regular, size: 14))
                                            .foregroundColor(Color.init(hex: Colors.color_F6))
                                        
                                        Spacer()
                                        
                                        Text("\(bookingDataObserver.bookingDatasetObserver?.customer_name ?? " ")")
                                            .font(Font.custom(Fonts.product_regular, size: 14))
                                        
                                    }
                                    HStack{
                                        Text("Mobile :")
                                            .font(Font.custom(Fonts.product_regular, size: 14))
                                            .foregroundColor(Color.init(hex: Colors.color_F6))
                                        
                                        Spacer()
                                        
                                        Text("\(bookingDataObserver.bookingDatasetObserver?.customer_mobile ?? " ")")
                                            .font(Font.custom(Fonts.product_regular, size: 14))
                                    }
                                    if bookingDataObserver.bookingDatasetObserver?.customer_email != ""{
                                        HStack{
                                            Text("Email :")
                                                .font(Font.custom(Fonts.product_regular, size: 14))
                                                .foregroundColor(Color.init(hex: Colors.color_F6))
                                            
                                            Spacer()
                                            
                                            Text("\(bookingDataObserver.bookingDatasetObserver?.customer_email ?? " ")")
                                                .font(Font.custom(Fonts.product_regular, size: 14))
                                        }
                                    }
                                        HStack{
                                            Text("Address :")
                                                .font(Font.custom(Fonts.product_regular, size: 14))
                                                .foregroundColor(Color.init(hex: Colors.color_F6))
                                            
                                            Spacer()
                                            
                                            Text("\(bookingDataObserver.bookingDatasetObserver?.customer_address ?? " ")")
                                                .font(Font.custom(Fonts.product_regular, size: 14))
                                            
                                        }
                                    
                                    
                                    HStack{
                                        Text("Area :")
                                            .font(Font.custom(Fonts.product_regular, size: 14))
                                            .foregroundColor(Color.init(hex: Colors.color_F6))
                                        
                                        Spacer()
                                        
                                        Text("\(bookingDataObserver.bookingDatasetObserver?.customer_area ?? " ")")
                                            .font(Font.custom(Fonts.product_regular, size: 14))
                                    }
                                    
                                    HStack{
                                        Text("Pincode :")
                                            .font(Font.custom(Fonts.product_regular, size: 14))
                                            .foregroundColor(Color.init(hex: Colors.color_F6))
                                        
                                        Spacer()
                                        
                                        Text("\(bookingDataObserver.bookingDatasetObserver?.customer_pincode ?? " ")")
                                            .font(Font.custom(Fonts.product_regular, size: 14))
                                    }
                                    HStack{
                                        Text("City :")
                                            .font(Font.custom(Fonts.product_regular, size: 14))
                                            .foregroundColor(Color.init(hex: Colors.color_F6))
                                        
                                        Spacer()
                                        
                                        Text("\(bookingDataObserver.bookingDatasetObserver?.customer_city ?? " ")")
                                            .font(Font.custom(Fonts.product_regular, size: 14))
                                    }
                                    
                                }
                                .padding()
                                Divider()
                            }
                        }
                        
                            //MARK: Recommendation
                                if bookingDataObserver.bookingDatasetObserver?.is_autojobcard == "1"{
                            VStack{
                                Button(){
                                    self.isReccomendationOpen.toggle()

                                    self.isBookingDetailsOpen = false
                                    self.isJobCardOpen = false
                                    self.isBookingTrackingOpen = false
                                    self.isPaymentDetailsOpen = false
                                    self.isServiceDetailsOpen = false
                                    //self.isReccomendationOpen = false

                                }label: {
                                    HStack{
                                        Text("Service Report Details / Recommendation")
                                            .font(Font.custom(Fonts.product_medium, size: 15))
                                            .foregroundColor(.black)
                                        Spacer()

                                        if isReccomendationOpen == false{
                                            Image("openList")
                                                .resizable()
                                                .frame(width: 12, height: 7)
                                        }else{
                                            Image("closeList")
                                                .resizable()
                                                .frame(width: 12, height: 7)
                                        }
                                    }
                                    .frame(width: geometry.size.width * 0.8)

                                }
                                .padding([.leading, .trailing, .top], 10)
                                Divider()
                                    .padding(.top, 10)
                            }

                                    if isReccomendationOpen{
                                        VStack{

                                            HStack(spacing: 10){
                                                NavigationLink(destination: ImageDetailView(displayImage: "extendImage").navigationBarHidden(true), tag: 1, selection: $callImageDetailView){
                                                    Image("extendImage")
                                                        .resizable()
                                                        .frame(width: 70, height: 70)
                                                        .onTapGesture {
                                                            self.callImageDetailView = 1
                                                        }
                                                }

                                                //                                Image("reccomendDemo")
                                                //                                    .resizable()
                                                //                                    .frame(width: 70, height: 70)

                                                VStack(alignment: .leading, spacing: 5){
                                                    Text("Comments")
                                                        .foregroundColor(.gray)
                                                        .font(.system(size: 14, weight: .regular))
                                                    Text("\(bookingDataObserver.bookingDatasetObserver?.specific_complaints ?? "") \(bookingDataObserver.bookingDatasetObserver?.specific_services ?? "") \(bookingDataObserver.bookingDatasetObserver?.specific_repairs ?? "")")
                                                        .multilineTextAlignment(.leading)
                                                        .font(.system(size: 15, weight: .regular))
                                                        .foregroundColor(.gray)
                                                }
                                            } .frame(width: geometry.size.width * 0.8)
                                                .padding(.leading)

                                            List{

                                                HStack(spacing: 10){
                                                    Image("reccomendDemo")
                                                        .resizable()
                                                        .frame(width: 70, height: 70)

                                                    VStack(alignment: .leading, spacing: 5){
                                                        Text("Comments")
                                                            .font(Font.custom(Fonts.product_medium, size: 13))
                                                            .foregroundColor(Color.init(hex: Colors.color_F6))
                                                        Text("\(bookingDataObserver.bookingDatasetObserver?.specific_complaints ?? "") \(bookingDataObserver.bookingDatasetObserver?.specific_services ?? "") \(bookingDataObserver.bookingDatasetObserver?.specific_repairs ?? "")")
                                                            .multilineTextAlignment(.leading)
                                                            .font(Font.custom(Fonts.product_medium, size: 13))
                                                            .foregroundColor(Color.init(hex: Colors.color_F6))
                                                    }
                                                    Spacer()
                                                }
                                                .frame(width: geometry.size.width * 0.8)
    //                                            Spacer()

                                            }
                                        }
                                    }
                                }
                            
                        //MARK: Jobcard Details
                            else{
                            
                                VStack{
                                    Button(){
                                        jobCardObserver.getJobCardDetail(booking_id: (UserDefaults.standard.string(forKey: "booking_id")!))

                                        if !jobCardObserver.store.isEmpty{
                                            self.isJobCardOpen.toggle()
                                        }
                                        self.isBookingDetailsOpen = false
                                        //self.isJobCardOpen = false
                                        self.isBookingTrackingOpen = false
                                        self.isPaymentDetailsOpen = false
                                        self.isServiceDetailsOpen = false
                                        self.isReccomendationOpen = false
                                        if jobCardObserver.store.isEmpty{     // if response null
                                            self.showJobcardText = "Jobcard Not Created"
                                        }
                                    }label: {
                                        HStack{
                                            Text("Jobcard Details")
                                                .font(Font.custom(Fonts.product_medium, size: 15))
                                                .foregroundColor(.black)

                                            Spacer()

                                            if isJobCardOpen == false{
                                                Image("openList")
                                                    .resizable()
                                                    .frame(width: 12, height: 7)
                                            }else{
                                                Image("closeList")
                                                    .resizable()
                                                    .frame(width: 12, height: 7)
                                            }
                                        }
                                        .frame(width: geometry.size.width * 0.8)
                                    }
                                    .padding([.leading, .trailing, .top], 10)
                                    Divider()
                                        .padding(.top, 10)

                                    if isJobCardOpen{
                                        HStack{

                                            Text("Name")
                                                .font(Font.custom(Fonts.product_medium, size: 12))
                                                .foregroundColor(.black)
                                                .frame(width: 127, alignment: .leading)

                                            Text("Qty")
                                                .font(Font.custom(Fonts.product_medium, size: 12))
                                                .frame(width: 27)


                                            Text("Spares")
                                                .font(Font.custom(Fonts.product_medium, size: 12))
                                                .frame(width: 44)


                                            Text("Labour")
                                                .font(Font.custom(Fonts.product_medium, size: 12))
                                                .frame(width: 44)


                                            Text("Total")
                                                .font(Font.custom(Fonts.product_medium, size: 12))
                                                .frame(width: 40)



                                        }
                                        .padding([.top, .bottom], 5)
                                        .padding([.leading, .trailing], 15)
                                        .background(Color(red: 0.906, green: 0.91, blue: 0.914))
                                        .cornerRadius(10)


                                        ForEach(jobCardObserver.store, id: \.self) {
                                            content in

                                            // Text("\(content.item_id)")
                                            VStack(alignment: .leading, spacing: 10){
                                                HStack(spacing: 10){
                                                    Text("\(content.item ?? " ")")
                                                        .font(Font.custom(Fonts.product_medium, size: 13))
                                                        .foregroundColor(Color.init(hex: Colors.color_F5))
                                                        .frame(width: 145, alignment: .leading)
                                                    //.background(.red)

                                                    Text("\(content.qty ?? " ")")
                                                        .font(Font.custom(Fonts.product_medium, size: 12))
                                                        .foregroundColor(Color.init(hex: Colors.color_F5))
                                                        .frame(width: 20, alignment: .leading)
                                                    //.background(.yellow)


                                                    Text("\(rsUnicode) \(content.spares_rate ?? " ")")
                                                        .font(Font.custom(Fonts.product_medium, size: 12))
                                                        .foregroundColor(Color.init(hex: Colors.color_F5))
                                                        .frame(width: 44, alignment: .leading)
                                                    // .background(.orange)

                                                    Text("\(rsUnicode) \(content.labour_rate ?? " " )")
                                                        .font(Font.custom(Fonts.product_medium, size: 12))
                                                        .foregroundColor(Color.init(hex: Colors.color_F5))
                                                        .frame(width: 44, alignment: .leading)
                                                    // .background(.cyan)

                                                    Text("\(rsUnicode) \(content.amount ?? " ")")
                                                        .font(Font.custom(Fonts.product_medium, size: 12))
                                                        .foregroundColor(Color.init(hex: Colors.color_F5))
                                                        .frame(width: 44, alignment: .leading)
                                                    // .background(.yellow)
                                                }


                                            }.frame(width: geometry.size.width * 0.9, alignment: .leading)
                                            //.background(.red)
                                                .padding(.leading, 20)

                                        }
                                    }
                                }
                            }
                        // MARK: Booking Tracking
                        VStack{
                            Button(){
                                self.isBookingTrackingOpen.toggle()
                                
                                self.isBookingDetailsOpen = false
                                self.isJobCardOpen = false
                                //self.isBookingTrackingOpen = false
                                self.isPaymentDetailsOpen = false
                                self.isServiceDetailsOpen = false
                                self.isReccomendationOpen = false
                            }label: {
                                HStack{
                                    Text("Booking Tracking")
                                        .font(Font.custom(Fonts.product_medium, size: 15))
                                        .foregroundColor(.black)
                                    
                                    Spacer()
                                    
                                    if isBookingTrackingOpen == false{
                                        Image("openList")
                                            .resizable()
                                            .frame(width: 12, height: 7)
                                    }else{
                                        Image("closeList")
                                            .resizable()
                                            .frame(width: 12, height: 7)
                                    }
                                }
                                .frame(width: geometry.size.width * 0.8)
                            }
                            .padding([.leading, .trailing, .top], 10)
                            Divider()
                                .padding(.top, 10)
                            
                            
                            //Booking tracking content
                            
                            if isBookingTrackingOpen{
                                
                                
                                VStack{
                                    VStack(spacing: 0){
                                        ForEach(bookingDetailObserver.bookingDetailModelObserver?.service_tracker ?? [], id: \.self){ trackService in
                                            
                                            
                                            
                                            VStack(alignment: HorizontalAlignment.leading, spacing: 0) {
                                                
                                                HStack {
                                                    
                                                    if trackService.action == "completed" && trackService.active == "0"{
                                                        Image("completedRadioButton").frame(width: 30)
                                                    }
                                                    else if trackService.action == "completed" && trackService.active == "1"{
                                                        Image("ongoingRadioButton").frame(width: 30)
                                                        
                                                    }
                                                    else{
                                                        Image("pendingRadioButton").frame(width: 30)
                                                    }
                                                    
                                                    
                                                    
                                                    Text("\(trackService.title ?? "")")
                                                        .font(Font.custom(Fonts.product_medium, size: 15))
                                                    
                                                    
                                                    Spacer()
                                                    
                                                }
                                                
                                                HStack{
                                                    if trackService.details == ""{
                                                        //if textIsHidden{
                                                        
                                                        if trackService.action == "completed" && trackService.active == "0"{
                                                            if trackService.title != "Booking Completed"{
                                                                Rectangle().fill(Color.blue).frame(width: 2, height: 15, alignment: .center).padding(.leading, 14)
                                                            }
                                                        }
                                                        else{
                                                            if trackService.title != "Booking Completed"{
                                                                Rectangle().fill(Color.gray).frame(width: 2, height: 15, alignment: .center).padding(.leading, 14)
                                                            }
                                                        }
                                                        
                                                        
                                                        Text("\(trackService.details ?? "")")
                                                            .foregroundColor(Color.init(hex: Colors.color_F5))
                                                            .font(Font.custom(Fonts.product_regular, size: 12))
                                                            .padding(.leading)
                                                            .frame(width: geometry.size.width * 0.8, alignment: .topLeading)
                                                        
                                                    }
                                                    else{
                                                        
                                                        if trackService.action == "completed" && trackService.active == "0"{if trackService.title != "Booking Completed"{
                                                            Rectangle().fill(Color.blue).frame(width: 2, height: 29, alignment: .center).padding(.leading, 14)
                                                        }
                                                        }else{
                                                            if trackService.title != "Booking Completed"{
                                                                Rectangle().fill(Color.gray).frame(width: 2, height: 29, alignment: .center).padding(.leading, 14)
                                                            }
                                                        }
                                                        
                                                        
                                                        Text("\(trackService.details ?? "")")
                                                            .foregroundColor(Color.init(hex: Colors.color_F5))
                                                            .font(Font.custom(Fonts.product_regular, size: 12))
                                                            .padding(.leading)
                                                            .padding(.bottom)
                                                            .frame(width: geometry.size.width * 0.8, alignment: .topLeading)
                                                    }
                                                    
                                                }
                                                
                                            }
                                            //.background()
                                        }
                                        
                                    }
                                    .padding()
                                    .background()
                                }
                                
                                
                                
                            }
                        }
                        
                        //MARK: Payment Details
                        VStack{
                            Button(){
                                self.isPaymentDetailsOpen.toggle()
                                
                                self.isBookingDetailsOpen = false
                                self.isJobCardOpen = false
                                self.isBookingTrackingOpen = false
                                //self.isPaymentDetailsOpen = false
                                self.isServiceDetailsOpen = false
                                self.isReccomendationOpen = false
                            }label: {
                                HStack{
                                    Text("Payment Details")
                                        .font(Font.custom(Fonts.product_medium, size: 15))
                                        .foregroundColor(.black)
        
                                    Spacer()
                                    
                                    if isPaymentDetailsOpen == false{
                                        Image("openList")
                                            .resizable()
                                            .frame(width: 12, height: 7)
                                    }else{
                                        Image("closeList")
                                            .resizable()
                                            .frame(width: 12, height: 7)
                                    }
                                }
                                .frame(width: geometry.size.width * 0.8)
                            }
                            .padding([.leading, .trailing, .top], 10)
                            Divider()
                                .padding(.top, 10)
                            //Content of Payment Details
                            if isPaymentDetailsOpen{
                                VStack(alignment: .leading ,spacing: 10){
                                    HStack{
                                        Text("Estimated Amount :")
                                            .foregroundColor(Color.init(hex: Colors.color_F6))
                                            .font(Font.custom(Fonts.product_medium, size: 13))
                                        
                                        Spacer()
                                        
                                        Text("\(rsUnicode) \(bookingDataObserver.bookingDatasetObserver?.payment_details?.estimated_amount ?? "0")")
                                            .foregroundColor(Color.init(hex: Colors.color_F6))
                                            .font(Font.custom(Fonts.product_medium, size: 13))
                                            
                                        
                                    }
                                    HStack{
                                        Text("Additional :")
                                            .foregroundColor(Color.init(hex: Colors.color_F6))
                                            .font(Font.custom(Fonts.product_medium, size: 13))
                                        
                                        Spacer()
                                        
                                        Text("\(rsUnicode) \(bookingDataObserver.bookingDatasetObserver?.payment_details?.discount ?? "0")")
                                            .foregroundColor(Color.init(hex: Colors.color_F6))
                                            .font(Font.custom(Fonts.product_medium, size: 13))
                                    }
                                    
                                    HStack{
                                        Text("Booking Fee Paid Total :")
                                            .foregroundColor(Color.init(hex: Colors.color_F6))
                                            .font(Font.custom(Fonts.product_medium, size: 13))
                                        
                                        Spacer()
                                        
                                        Text("\(rsUnicode) \(bookingDataObserver.bookingDatasetObserver?.payment_details?.booking_fee ?? "")")
                                            .foregroundColor(Color.init(hex: Colors.color_F6))
                                            .font(Font.custom(Fonts.product_medium, size: 13))
                                    }
                                    
                                    HStack{
                                        Text("Wallet Used :")
                                            .foregroundColor(Color.init(hex: Colors.color_F6))
                                            .font(Font.custom(Fonts.product_medium, size: 13))
                                        
                                        Spacer()
                                        
                                        Text("\(rsUnicode) \(bookingDataObserver.bookingDatasetObserver?.payment_details?.wallet_used ?? "")")
                                            .foregroundColor(Color.init(hex: Colors.color_F6))
                                            .font(Font.custom(Fonts.product_medium, size: 13))
                                        
                                    }
                                    
                                    HStack{
                                        Text("Payable Amount :")
                                            .foregroundColor(Color.init(hex: Colors.color_F6))
                                            .font(Font.custom(Fonts.product_medium, size: 13))
                                        
                                        Spacer()
                                        
                                        Text("\(rsUnicode) \(bookingDataObserver.bookingDatasetObserver?.payment_details?.payable_amount ?? "")")
                                            .foregroundColor(Color.init(hex: Colors.color_F6))
                                            .font(Font.custom(Fonts.product_medium, size: 13))
                                    }
                                    
                                }
                                .padding()
                                Divider()
                            }
                            
                        }
                        
                        //MARK: Service details
                        VStack{
                            Button(){
                                self.isServiceDetailsOpen.toggle()
                                
                                self.isBookingDetailsOpen = false
                                self.isJobCardOpen = false
                                self.isBookingTrackingOpen = false
                                self.isPaymentDetailsOpen = false
                                //self.isServiceDetailsOpen = false
                                self.isReccomendationOpen = false
                                
                            }label: {
                                HStack{
                                    Text("Service Details")
                                        .font(Font.custom(Fonts.product_medium, size: 15))
                                        .foregroundColor(.black)
                                    Spacer()
                                    
                                    if isServiceDetailsOpen == false{
                                        Image("openList")
                                            .resizable()
                                            .frame(width: 12, height: 7)
                                    }else{
                                        Image("closeList")
                                            .resizable()
                                            .frame(width: 12, height: 7)
                                    }
                                }
                                .frame(width: geometry.size.width * 0.8)
                                
                            }
                            .padding([.leading, .trailing, .top], 10)
                            Divider()
                                .padding(.top, 10)
                            
                            //content of Service details
                            if isServiceDetailsOpen{
                                VStack(alignment: .leading ,spacing: 10){
                                    HStack{
                                        Text("Name :")
                                            .font(Font.custom(Fonts.product_medium, size: 13))
                                            .foregroundColor(Color.init(hex: Colors.color_F6))
                                        
                                        Spacer()
                                        
                                        Text("Standard Service")
                                            .font(Font.custom(Fonts.product_medium, size: 13))
                                        
                                    }
                                    if bookingDataObserver.bookingDatasetObserver?.payment_details?.coupon_code == ""{
                                        HStack{
                                            Text("Coupon :")
                                                .font(Font.custom(Fonts.product_medium, size: 13))
                                                .foregroundColor(Color.init(hex: Colors.color_F6))
                                            
                                            Spacer()
                                            
                                            Text(bookingDataObserver.bookingDatasetObserver?.payment_details?.coupon_code ?? "")
                                                .font(Font.custom(Fonts.product_medium, size: 13))
                                        }
                                    }
                                    VStack{
                                        HStack{
                                            Button(){
                                                self.isComplaintOpen.toggle()
                                            }label: {
                                                Text("Complaint: ")
                                                    .font(Font.custom(Fonts.product_medium, size: 13))
                                                    .foregroundColor(Color.init(hex: Colors.color_F6))
                                                
                                                Spacer()
                                                
                                                if isComplaintOpen == false{
                                                    Image("openList")
                                                        .resizable()
                                                        .frame(width: 12, height: 7)
                                                }else{
                                                    Image("closeList")
                                                        .resizable()
                                                        .frame(width: 12, height: 7)
                                                }
                                            }
                                        }
                                        if isComplaintOpen{
                                            VStack{
                                                Text("\(bookingDataObserver.bookingDatasetObserver?.specific_complaints ?? "") \(bookingDataObserver.bookingDatasetObserver?.specific_services ?? "") \(bookingDataObserver.bookingDatasetObserver?.specific_repairs ?? "")")
                                                    .font(Font.custom(Fonts.product_medium, size: 13))
                                                    .foregroundColor(Color.init(hex: Colors.color_F6))
                                                    .multilineTextAlignment(.leading)
                                            }
                                        }
                                    }
                                }
                                .padding()
                                Divider()
                                
                            }
                            
                        }
                      
                    }
                    .padding(.top)
                }
                .frame(width: geometry.size.width * 0.9)
                    .background()
                    .cornerRadius(20)
                
//                Spacer()
            }.frame(width:geometry.size.width, height:geometry.size.height * 0.97,alignment: .top)
                .background(Color.init(hex: Colors.color_gr))
                .cornerRadius(30, corners: [.topLeft, .topRight])
                
//                .edgesIgnoringSafeArea(.bottom)
            //.padding()
        }
        .showToast(text: $showJobcardText)
        .showProgressView(showProgress: $showProgress)

            .onAppear(){
                bookingDataObserver.getBookingDataSet(customer_id: (UserDefaults.standard.string(forKey: "customer_id")!), booking_id: (UserDefaults.standard.string(forKey: "booking_id")!))
                serviceReport.getServiceReport(booking_id: (UserDefaults.standard.string(forKey: "booking_id")!))
                showProgress = false
                bookingID = bookingDataObserver.bookingDatasetObserver?.booking_id ?? ""
                is_reschedule = bookingDataObserver.bookingDatasetObserver?.is_reschedule ?? -1
            }
        //}
        }
    }
}

//struct BookingDetailsView_Previews: PreviewProvider {
//    static var previews: some View {
//        BookingDetailsView(price: .constant(""))
//    }
//}