Untitled

 avatar
unknown
plain_text
2 years ago
20 kB
7
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()
    
    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()
                                            
                                        //Set image
                                        Image(uiImage: self.rcFront)
                                            .resizable()
                                        //.scaledToFill()
                                            .scaledToFit()
                                            .frame(width: geometry.size.width * 0.4, height: 70)
                                            .overlay(
                                                RoundedRectangle(cornerRadius: 10)
                                                    .stroke(style: StrokeStyle(lineWidth: 1, dash: [10.0]))
                                                    .foregroundColor(.orange))
                                        //                            .background()
                                            .cornerRadius(10)
//                                            .onAppear(){
//                                                //url.loadImage(image as UIImage?)
                                           // }
                                        
                                           
                                            .onTapGesture {
                                                
                                               
                                                print("Rc item1 pressed")
                                                self.showingActionSheet = true
                                                
                                                let document = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
                                                let imgUrl = document.appendingPathComponent("RCFront", isDirectory: true)
                                                
                                                //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()
                                        //Set image
                                        Image(uiImage: self.rcRear)
                                            .resizable()
                                        //.scaledToFill()
                                            .scaledToFit()
                                            .frame(width: geometry.size.width * 0.4, height: 70)
                                            .overlay(
                                                RoundedRectangle(cornerRadius: 10)
                                                    .stroke(style: StrokeStyle(lineWidth: 1, dash: [10.0]))
                                                    .foregroundColor(.orange))
                                        //                            .background()
                                            .cornerRadius(10)
                                            .onTapGesture {
                                                print("Rc item1 pressed")
                                                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("thumbnailAdd")
                                            .frame(width: geometry.size.width * 0.4, height: 70)
                                            .background()
                                        //Set image
                                        Image(uiImage: self.drivingLicenceFront)
                                            .resizable()
                                        //.scaledToFill()
                                            .scaledToFit()
                                            .frame(width: geometry.size.width * 0.4, height: 70)
                                            .overlay(
                                                RoundedRectangle(cornerRadius: 10)
                                                    .stroke(style: StrokeStyle(lineWidth: 1, dash: [10.0]))
                                                    .foregroundColor(.orange))
                                        //                            .background()
                                            .cornerRadius(10)
                                            .onTapGesture {
                                                print("Rc item1 pressed")
                                                self.showingActionSheet = true
                                            }
                                    }
                                    .padding(.leading, 20)
                                    .padding(.trailing, 15)
                                    Text("Front")
                                }
                                
                                
                                
                                VStack{
                                    ZStack{
                                        //default image
                                        
                                        Image("thumbnailAdd")
                                            .frame(width: geometry.size.width * 0.4, height: 70)
                                            .background()
                                        //Set image
                                        Image(uiImage: self.drivingLicenceRear)
                                            .resizable()
                                        //.scaledToFill()
                                            .scaledToFit()
                                            .frame(width: geometry.size.width * 0.4, height: 70)
                                            .overlay(
                                                RoundedRectangle(cornerRadius: 10)
                                                    .stroke(style: StrokeStyle(lineWidth: 1, dash: [10.0]))
                                                    .foregroundColor(.orange))
                                        //                            .background()
                                            .cornerRadius(10)
                                            .onTapGesture {
                                                print("Rc item1 pressed")
                                                self.showingActionSheet = true
                                            }
                                    }
                                    .padding(.trailing, 20)
                                    Text("Rear")
                                }
                                
                            }
                            
                            
                            
                        }
                        
                        //MARK: PUC
                        VStack(alignment: .leading){
                            Text("PUC")
                                .padding(.leading, 20)
                            
                            HStack{
                                
                                VStack{
                                    ZStack{
                                        //default image
                                        
                                        Image("thumbnailAdd")
                                            .frame(width: geometry.size.width * 0.4, height: 70)
                                            .background()
                                        //Set image
                                        Image(uiImage: self.pucFront)
                                            .resizable()
                                        //.scaledToFill()
                                            .scaledToFit()
                                            .frame(width: geometry.size.width * 0.4, height: 70)
                                            .overlay(
                                                RoundedRectangle(cornerRadius: 10)
                                                    .stroke(style: StrokeStyle(lineWidth: 1, dash: [10.0]))
                                                    .foregroundColor(.orange))
                                        //                            .background()
                                            .cornerRadius(10)
                                            .onTapGesture {
                                                print("puc item1 pressed")
                                                self.showingActionSheet = true
                                            }
                                    }
                                    .padding(.leading, 20)
                                    .padding(.trailing, 15)
                                    Text("Front")
                                }
                                
                                VStack{
                                    ZStack{
                                        //default image
                                        
                                        Image("thumbnailAdd")
                                            .frame(width: geometry.size.width * 0.4, height: 70)
                                            .background()
                                        //Set image
                                        Image(uiImage: self.pucRear)
                                            .resizable()
                                        //.scaledToFill()
                                            .scaledToFit()
                                            .frame(width: geometry.size.width * 0.4, height: 70)
                                            .overlay(
                                                RoundedRectangle(cornerRadius: 10)
                                                    .stroke(style: StrokeStyle(lineWidth: 1, dash: [10.0]))
                                                    .foregroundColor(.orange))
                                        //                            .background()
                                            .cornerRadius(10)
                                            .onTapGesture {
                                                print("puc item2 pressed")
                                                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)
            }
            .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)


                }
                else {

                    ImagePickerView(sourceType: .camera, showingType: $showingType, selectedRCfront: self.$rcFront)

                }
            }
        }.onAppear {
            //url.loadImage(image)
        }
    }
//    func saveImages(_ image1: UIImage?){
//
//        //To create the documents folder
//        let document = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
//
//        print("document path: \(document)")
//
//        let imgUrl = document.appendingPathComponent("RCFront", isDirectory: true)
//        print("Image Path with name",imgUrl.path)
//
//        //If we wre not getting the image path then
////        if !FileManager.default.fileExists(atPath: imgUrl.path){
////            do{
////                try image1.jpegComp
////
////            }catch{
////
////
////            }
//
//
//        }
    
    }
    

//extension URL {
//    func loadImage(_ image: inout UIImage?) {
//        if let data = try? Data(contentsOf: self), let loaded = UIImage(data: data) {
//            image = loaded
//        } else {
//            image = nil
//        }
//    }
//
//        func saveImage(_ image: UIImage?) {
//            if let image = image {
//                if let data = image.jpegData(compressionQuality: 1.0) {
//                    try? data.write(to: self)
//                }
//            } else {
//                try? FileManager.default.removeItem(at: self)
//            }
//        }
//    }
    
    struct PhotoSelectorView_Previews: PreviewProvider {
        static var previews: some View {
            DocumentVaultView()
        }
    }
    

Editor is loading...