Untitled

 avatar
unknown
swift
2 years ago
7.3 kB
8
Indexable
//
//  ImagePickerView.swift
//  Garageworks-iOS-Revamp
//
//  Created by DigitalFlake Kapil Dongre on 13/01/23.
//
/* ImagePickerView which confirms, UIViewControllerRepresentable (this is helps us to use UIKit in SwiftUI) protocol.*/
import UIKit
import SwiftUI


struct ImagePickerView: UIViewControllerRepresentable {
    
    var sourceType: UIImagePickerController.SourceType = .photoLibrary
    
    @Binding var showingType: PhotoSheetType?
    
    @Binding var selectedRCfront: UIImage
    
    @Binding var buttonTag: String
    
    
    @Environment(\.presentationMode) private var presentationMode
    
    func makeUIViewController(context: UIViewControllerRepresentableContext<ImagePickerView>) -> UIImagePickerController {
        
        print("Button tag received of image type: \(buttonTag)")
        
        let imagePicker = UIImagePickerController()
        imagePicker.allowsEditing = false
        imagePicker.sourceType = sourceType
        imagePicker.delegate = context.coordinator
        
        return imagePicker
    }
    
    func updateUIViewController(_ uiViewController: UIImagePickerController, context: UIViewControllerRepresentableContext<ImagePickerView>) {
        
    }
    
    func makeCoordinator() -> Coordinator {
        Coordinator(self, selectedButtonTag: "")
    }
    
    final class Coordinator: NSObject, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
        
        var parent: ImagePickerView
        var selectedButtonTag: String
        
        init(_ parent: ImagePickerView, selectedButtonTag: String) {
            self.parent = parent
            self.selectedButtonTag = selectedButtonTag
        }
        
        func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
            
            if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
                parent.selectedRCfront = image
                
                if parent.buttonTag == "RC_Front"{
                    
                    print("Tag matched RC_Front")
                    saveImageDocumentDirectoryRCFront(image: image, nameAndExtension: "Rc_front.png")
                }
                else if parent.buttonTag == "RC_Back"
                {
                    saveImageDocumentDirectoryRCBack(image: image, nameAndExtension: "Rc_back.png")
                    print("Tag matched RC_back")
                }
                else if parent.buttonTag == "DL_Front"
                {
                    print("Tag matched DL_Front")
                    saveImageDocumentDirectoryDrivingLicenseFront(image: image, nameAndExtension: "DL_Front.png")
                }
                else if parent.buttonTag == "DL_Rear"
                {
                    print("Tag matched DL_Rear")
                    saveImageDocumentDirectoryDrivingLicenseRear(image: image, nameAndExtension: "DL_Rear.png")
                }
                else if parent.buttonTag == "PUC_Front"{
                    print("Tag matched PUC_Front")
                    saveImageDocumentDirectoryPUCFront(image: image, nameAndExtension: "PUC_Front.png")
                }
                else if parent.buttonTag == "PUC_Rear"{
                    print("Tag matched PUC_Rear")
                    saveImageDocumentDirectoryPUCRear(image: image, nameAndExtension: "PUC_Rear.png")
                }
               
            }
            
            parent.presentationMode.wrappedValue.dismiss()
        }
    }
}


func saveImageDocumentDirectoryRCBack(image: UIImage, nameAndExtension: String){
    let fileManager = FileManager.default
    let paths = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent(nameAndExtension)
    print(paths)
    let imageData = image.jpegData(compressionQuality: 0.5)
    fileManager.createFile(atPath: paths as String, contents: imageData, attributes: nil)
}
func saveImageDocumentDirectoryRCFront(image: UIImage, nameAndExtension: String){
    let fileManager = FileManager.default
    let paths = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent(nameAndExtension)
    print(paths)
    let imageData = image.jpegData(compressionQuality: 0.5)
    fileManager.createFile(atPath: paths as String, contents: imageData, attributes: nil)
}


func saveImageDocumentDirectoryDrivingLicenseFront(image: UIImage, nameAndExtension: String){
    let fileManager = FileManager.default
    let paths = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent(nameAndExtension)
    print(paths)
    let imageData = image.jpegData(compressionQuality: 0.5)
    fileManager.createFile(atPath: paths as String, contents: imageData, attributes: nil)
}

func saveImageDocumentDirectoryDrivingLicenseRear(image: UIImage, nameAndExtension: String){
    let fileManager = FileManager.default
    let paths = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent(nameAndExtension)
    print(paths)
    let imageData = image.jpegData(compressionQuality: 0.5)
    fileManager.createFile(atPath: paths as String, contents: imageData, attributes: nil)
}

func saveImageDocumentDirectoryPUCFront(image: UIImage, nameAndExtension: String){
    let fileManager = FileManager.default
    let paths = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent(nameAndExtension)
    print(paths)
    let imageData = image.jpegData(compressionQuality: 0.5)
    fileManager.createFile(atPath: paths as String, contents: imageData, attributes: nil)
}

func saveImageDocumentDirectoryPUCRear(image: UIImage, nameAndExtension: String){
    let fileManager = FileManager.default
    let paths = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent(nameAndExtension)
    print(paths)
    let imageData = image.jpegData(compressionQuality: 0.5)
    fileManager.createFile(atPath: paths as String, contents: imageData, attributes: nil)
}

//to retrieve the directory Path
func getDirectoryPath() -> String {
    let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
    let documentsDirectory = paths[0]
    return documentsDirectory
}

func getImage(nameAndExtension: String) -> UIImage?{
    var image: UIImage? = nil
    let fileManager = FileManager.default
    let imagePAth = (getDirectoryPath() as NSString).appendingPathComponent(nameAndExtension)
    if fileManager.fileExists(atPath: imagePAth){
        image = UIImage(contentsOfFile: imagePAth)
    }
    return image
}

func createDirectory(nameDirectory: String){
    let fileManager = FileManager.default
    let paths = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent(nameDirectory)
    if !fileManager.fileExists(atPath: paths){
        try! fileManager.createDirectory(atPath: paths, withIntermediateDirectories: true, attributes: nil)
    }else{
        print("Already dictionary created.")
    }
}
Editor is loading...