//
//  VFYAuditModel.h
//  Verif-y Neo
//
//  Created by MTN on 10/02/21.
//

#import <Foundation/Foundation.h>

@class VFYAuditModel;
@class VFYDeviceDetailLog;
@class VFYDocExtractionLog;
@class VFYErrorDetail;
@class VFYFieldComparisonList;

NS_ASSUME_NONNULL_BEGIN

#pragma mark - Object interfaces

@interface VFYAuditModel : NSObject
@property (nonatomic, strong) VFYDeviceDetailLog *deviceDetailLog;
@property (nonatomic, strong) VFYDocExtractionLog *docExtractionLog;
@property (nonatomic, strong) VFYErrorDetail *errorDetail;
@property (nonatomic, copy) NSString *eventDuration;
@property (nonatomic, copy)   NSString *eventStatus;
@property (nonatomic, copy)   NSString *eventType;
@property (nonatomic, strong)   NSMutableArray<VFYFieldComparisonList *> *fieldComparisonList;
@property (nonatomic, assign) BOOL isRetry;
@property (nonatomic, assign) NSInteger previousEventID;
@property (nonatomic, copy)   NSString *requestID;

+ (_Nullable instancetype)fromJSON:(NSString *)json encoding:(NSStringEncoding)encoding error:(NSError *_Nullable *)error;
+ (_Nullable instancetype)fromData:(NSData *)data error:(NSError *_Nullable *)error;
- (NSString *_Nullable)toJSON:(NSStringEncoding)encoding error:(NSError *_Nullable *)error;
- (NSData *_Nullable)toData:(NSError *_Nullable *)error;
@end

@interface VFYDeviceDetailLog : NSObject
@property (nonatomic, copy) NSString *appIdentifier;
@property (nonatomic, copy) NSString *createDate;
@property (nonatomic, copy) NSString *deviceModel;
@property (nonatomic, copy) NSString *language;
@property (nonatomic, copy) NSString *location;
@property (nonatomic, copy) NSString *osVersion;
@end

@interface VFYDocExtractionLog : NSObject
@property (nonatomic, copy)   NSString *docBackRef;
@property (nonatomic, copy)   NSString *docFrontRef;
@property (nonatomic, copy)   NSString *docType;
@property (nonatomic, copy)   NSString *docTypeName;
@property (nonatomic, copy)   NSString *extractionChannel;
@property (nonatomic, copy) NSString *extractionDuration;
@property (nonatomic, copy)   NSString *extractionID;
@property (nonatomic, copy)   NSString *extractionStatus;
@end

@interface VFYErrorDetail : NSObject
@property (nonatomic, copy)   NSString *errorCode;
@property (nonatomic, copy)   NSString *errorMsg;
@property (nonatomic, assign) NSInteger eventID;
@property (nonatomic, copy)   NSString *serviceRequestID;
@end

@interface VFYFieldComparisonList : NSObject
@property (nonatomic, assign) NSInteger comparisonScore;
@property (nonatomic, copy)   NSString *comparisonStatus;
@property (nonatomic, assign) BOOL isEditedByUser;
@property (nonatomic, assign) BOOL isExtracted;
@property (nonatomic, assign) BOOL isNameSuggested;
@property (nonatomic, copy)   NSString *sourceFieldName;
@property (nonatomic, copy)   NSString *sourceFieldValue;
@property (nonatomic, copy)   NSString *targetFieldName;
@property (nonatomic, copy)   NSString *targetFieldValue;
@property (nonatomic, copy)   NSString *validationMessage;
@end

NS_ASSUME_NONNULL_END
