Untitled

 avatar
unknown
swift
2 years ago
18 kB
9
Indexable
//
//  PhotoSelectorView.swift
//  Garageworks-iOS-Revamp
//
//  Created by DigitalFlake Kapil Dongre on 13/01/23.
//

import SwiftUI
import Foundation
import UIKit


enum PhotoSheetType: Identifiable { /// 1.
    var id: UUID {
        UUID()
    }
    case gallery
    case camera
}


struct DocumentVaultView: View {
    
    @Environment(\.presentationMode) var presentationMode
    
    @State private var image = UIImage(systemName: "xmark")!
    private var url: URL {
        let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
        return paths[0].appendingPathComponent("image.jpg")
    }
    
    //@State private var showingActionSheet = false
    @State private var selection = "None"
    
    /// 2.
    @State private var showingType: PhotoSheetType?
    @State private var showingActionSheet = false
    
    @State private var isShowPhotoLibrary = false
    
    @State private var rcFront = UIImage()
    @State private var rcRear = UIImage()
    
    @State private var drivingLicenceFront = UIImage()
    @State private var drivingLicenceRear = UIImage()
    
    @State private var pucFront = UIImage()
    @State private var pucRear = UIImage()
    
    @State private var rcFrontTag = ""
    
    var body: some View {
        
        GeometryReader{geometry in
            
            VStack {
                HStack(spacing: 20){
                    Button(){
                        print("Back navigationCross button pressed")
                        self.presentationMode.wrappedValue.dismiss()
                        
                    }label: {
                        
                        Image("arrow-left")
                            .resizable()
                            .frame(width: 20, height: 20)
                        
                        
                    }
                    
                    
                    
                    Text("Document Vault")
                        .font(.system(size: 16, weight: .regular))
                    Spacer()
                }
                .padding(.leading, 20)
                
                VStack{
                    VStack(alignment: .leading, spacing: 20){
                        //MARK: RC image
                        
                        VStack(alignment: .leading){
                            Text("Rc Book")
                                .padding(.leading, 20)
                            
                            HStack{
                                VStack(spacing: 15){
                                    ZStack{
                                        //default image
                                        
                                        //                                        Image("thumbnailAdd")
                                        //                                            .frame(width: geometry.size.width * 0.4, height: 70)
                                        //                                            .background()
                                        //                                            .cornerRadius(10)
                                        
                                        Image(uiImage: getImage(nameAndExtension: "Rc_front.png") ?? UIImage(named: "thumbnailAdd")!)
                                            .resizable()
                                            .aspectRatio(contentMode: .fit)
                                            .frame(width: geometry.size.width * 0.4, height: 70)
                                            .background()
                                            .overlay(
                                                RoundedRectangle(cornerRadius: 10)
                                                    .stroke(style: StrokeStyle(lineWidth: 1, dash: [10.0]))
                                                    .foregroundColor(.orange))
                                            .cornerRadius(10)
                                            .onTapGesture {
                                                
                                                
                                                print("Rc item1 pressed")
                                                self.showingActionSheet = true
                                                self.rcFrontTag = "RC_Front"
//                                                let document = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
//                                                let imgUrl = document.appendingPathComponent("RCFront", isDirectory: true)
//                                                print("imgUrl: \(imgUrl)")
                                                
                                                //url.saveImage(image)
                                            }
                                    }
                                    .padding(.leading, 20)
                                    .padding(.trailing, 15)
                                    Text("Front")
                                }
                                
                                VStack{
                                    ZStack{
                                        //default image
                                        
//                                        Image("thumbnailAdd")
//                                            .frame(width: geometry.size.width * 0.4, height: 70)
//                                            .background()
//                                            .cornerRadius(10)
                                        //Set image
                                        Image(uiImage: getImage(nameAndExtension: "Rc_back.png") ?? UIImage(named: "thumbnailAdd")!)
                                            .resizable()
                                            .aspectRatio(contentMode: .fit)
                                            .frame(width: geometry.size.width * 0.4, height: 70)
                                            .background()
                                            .overlay(
                                                RoundedRectangle(cornerRadius: 10)
                                                    .stroke(style: StrokeStyle(lineWidth: 1, dash: [10.0]))
                                                    .foregroundColor(.orange))
                                            .cornerRadius(10)
                                            .onTapGesture {
                                                print("Rc back pressed")
                                                self.rcFrontTag = "RC_Back"
                                                self.showingActionSheet = true
                                                
                                            }
                                    }
                                    .padding(.trailing, 20)
                                    Text("Rear")
                                }
                                
                            }
                        }
                        //MARK: Driving Licence
                        VStack(alignment: .leading){
                            Text("Driving Licence")
                                .padding(.leading, 20)
                            
                            HStack{
                                
                                
                                VStack{
                                    ZStack{
                                        //default image
                                        
                                        Image(uiImage: getImage(nameAndExtension: "DL_Front.png") ?? UIImage(named: "thumbnailAdd")!)
                                            .resizable()
                                            .aspectRatio(contentMode: .fit)
                                            .frame(width: geometry.size.width * 0.4, height: 70)
                                            .background()
                                            .overlay(
                                                RoundedRectangle(cornerRadius: 10)
                                                    .stroke(style: StrokeStyle(lineWidth: 1, dash: [10.0]))
                                                    .foregroundColor(.orange))
                                            .cornerRadius(10)
                                            .onTapGesture {
                                                print("Driving License front pressed")
                                                self.rcFrontTag = "DL_Front"
                                                self.showingActionSheet = true
                                            }
                                    }
                                    .padding(.leading, 20)
                                    .padding(.trailing, 15)
                                    Text("Front")
                                }
                                
                                
                                
                                VStack{
                                    ZStack{
                                        //default image
                                        
                                        Image(uiImage: getImage(nameAndExtension: "DL_Rear.png") ?? UIImage(named: "thumbnailAdd")!)
                                            .resizable()
                                            .aspectRatio(contentMode: .fit)
                                            .frame(width: geometry.size.width * 0.4, height: 70)
                                            .background()
                                            .overlay(
                                                RoundedRectangle(cornerRadius: 10)
                                                    .stroke(style: StrokeStyle(lineWidth: 1, dash: [10.0]))
                                                    .foregroundColor(.orange))
                                            .cornerRadius(10)
                                            .cornerRadius(10)
                                            .onTapGesture {
                                                print("DL_Rear pressed")
                                                self.rcFrontTag = "DL_Rear"
                                                self.showingActionSheet = true
                                            }
                                    }
                                    .padding(.trailing, 20)
                                    Text("Rear")
                                }
                                
                            }
                        }
                        
                        //MARK: PUC
                        VStack(alignment: .leading){
                            Text("PUC")
                                .padding(.leading, 20)
                            
                            HStack{
                                
                                VStack{
                                    ZStack{
                                        //default image
                                        
                                        Image(uiImage: getImage(nameAndExtension: "PUC_Front.png") ?? UIImage(named: "thumbnailAdd")!)
                                            .resizable()
                                            .aspectRatio(contentMode: .fit)
                                            .frame(width: geometry.size.width * 0.4, height: 70)
                                            .background()
                                            .overlay(
                                                RoundedRectangle(cornerRadius: 10)
                                                    .stroke(style: StrokeStyle(lineWidth: 1, dash: [10.0]))
                                                    .foregroundColor(.orange))
                                            .cornerRadius(10)
                                            .cornerRadius(10)
                                            .onTapGesture {
                                                print("PUC_Front pressed")
                                                self.rcFrontTag = "PUC_Front"
                                                self.showingActionSheet = true
                                            }
                                    }
                                    .padding(.leading, 20)
                                    .padding(.trailing, 15)
                                    Text("Front")
                                }
                                
                                VStack{
                                    ZStack{
                                        //default image
                                        
                                        Image(uiImage: getImage(nameAndExtension: "PUC_Rear.png") ?? UIImage(named: "thumbnailAdd")!)
                                            .resizable()
                                            .aspectRatio(contentMode: .fit)
                                            .frame(width: geometry.size.width * 0.4, height: 70)
                                            .background()
                                            .overlay(
                                                RoundedRectangle(cornerRadius: 10)
                                                    .stroke(style: StrokeStyle(lineWidth: 1, dash: [10.0]))
                                                    .foregroundColor(.orange))
                                            .cornerRadius(10)
                                            .cornerRadius(10)
                                            .onTapGesture {
                                                print("PUC_Rear pressed")
                                                self.rcFrontTag = "PUC_Rear"
                                                self.showingActionSheet = true
                                            }
                                    }
                                    .padding(.trailing, 20)
                                    Text("Rear")
                                }
                                
                            }
                            
                            
                        }
                        
                        //MARK: Upload Insurance
                        VStack(alignment: .leading){
                            Text("Insurance Policy")
                                .padding(.leading, 20)
                            
                            Button(action: {
                                print("Upload insurance")
                            }, label: {
                                
                                HStack{
                                    Image("addPdf")
                                        .resizable()
                                        .frame(width: 50, height: 50)
                                        .padding(.trailing, 15)
                                        .padding(.leading, 20)
                                    
                                    Text("Upload Policy Document")
                                        .foregroundColor(.black)
                                    Spacer()
                                }
                                .frame(width: geometry.size.width * 0.9, height: 90)
                                .background()
                                .overlay(
                                    RoundedRectangle(cornerRadius: 10)
                                        .stroke(style: StrokeStyle(lineWidth: 1, dash: [10.0]))
                                        .foregroundColor(.orange))
                            })
                            .padding([.leading, .trailing], 20)
                            //.frame(width: geometry.size.width * 0.9, height: 90)
                            
                            
                        }
                        
                    }
                    .padding(.top, 25)
                    
                    Spacer()
                    
                }.frame(maxWidth: UIScreen.main.bounds.width, maxHeight: UIScreen.main.bounds.height).background(Color(red: 0.945, green: 0.949, blue: 0.992)).cornerRadius(25, corners: [.topLeft, .topRight]).edgesIgnoringSafeArea(.bottom)
            }
            .onAppear {
                //url.loadImage(image)
                print("navigating to current screen")
            }
            .actionSheet(isPresented: $showingActionSheet) {
                
                ActionSheet(
                    title: Text("Select a Action"),
                    buttons: [
                        .default(Text("Select photo from gallery")) {
                            
                            showingType = .gallery
                            isShowPhotoLibrary = true
                        },
                        
                            .default(Text("Capture photo from camera")) {
                                //selection = "Open Camera"
                                showingType = .camera
                                isShowPhotoLibrary = true
                            },
                        .cancel(Text("Cancel"))
                    ]
                )
                
            }
            .sheet(isPresented: $isShowPhotoLibrary) { //type in
                if showingType == .gallery {
                    ImagePickerView(sourceType: .photoLibrary, showingType: $showingType, selectedRCfront: self.$rcFront, buttonTag: $rcFrontTag)
                    
                    
                }
                else {
                    
                    ImagePickerView(sourceType: .camera, showingType: $showingType, selectedRCfront: self.$rcFront, buttonTag: $rcFrontTag)
                    
                }
            }
        }
    }
   
    
}

struct PhotoSelectorView_Previews: PreviewProvider {
    static var previews: some View {
        DocumentVaultView()
    }
}


Editor is loading...