//  APIClient.h
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface APIClient : NSObject

+ (void)fetchAccessItem:(NSString *)unitId
                 completion:(void(^)(BOOL success, NSDictionary * _Nullable response, NSError * _Nullable error))completion;

+ (void)fetchGetUnitPlan:(void (^)(NSDictionary * _Nullable data, NSError * _Nullable error))completion;

+ (void)fetchSettingsByLocation:(NSString * _Nonnull)locationID
                      projectID:(NSString * _Nonnull)projectID
                     completion:(void (^)(NSDictionary * _Nullable data, NSError * _Nullable error))completion;

+ (void)submitAddIssue:(NSDictionary * _Nonnull)params
                images:(NSArray<UIImage *> * _Nullable)images
            completion:(void (^)(NSDictionary * _Nullable data, NSError * _Nullable error))completion;

+ (void)submitUpdateIssue:(NSDictionary * _Nonnull)updateData
                   images:(NSArray<UIImage *> * _Nullable)images
               completion:(void (^)(NSDictionary * _Nullable response, NSError * _Nullable error))completion;

+ (void)fetchAppointment:(void (^)(NSDictionary * _Nullable data, NSError * _Nullable error))completion;

+ (void)fetchGeneralInfo:(void (^)(NSDictionary * _Nullable data, NSError * _Nullable error))completion;

+ (void)submitAppointment:(NSDictionary *)appointmentData
                 completion:(void(^)(BOOL success, NSDictionary * _Nullable response, NSError * _Nullable error))completion;

+ (void)submitRepresentativeAppointment:(NSDictionary *)repData
                                 completion:(void(^)(BOOL success, NSDictionary * _Nullable response, NSError * _Nullable error))completion;

+ (void)fetchCancelAppointment:(id)appointmentId
                        reason:(NSString *)reason
                    completion:(void (^)(NSDictionary * _Nullable data, NSError * _Nullable error))completion;

+ (void)fetchDashboardInfo:(void (^)(NSDictionary *data, NSError *error))completion;

+ (void)fetchAnnouncement:(void (^)(NSDictionary *data, NSError *error))completion;

+ (void)fetchHistory:(NSString *)issueID
          completion:(void (^)(NSDictionary *data, NSError *error))completion;

+(void)submitAddInfo:(NSString *)issueID
            remarks:(NSString *)remarks
         completion:(void (^)(NSDictionary *data, NSError *error))completion;

+ (void)uploadAddInfo:(NSString *)issueID
              remarks:(NSString *)remarks
               images:(NSArray<UIImage *> *)images
             mediaURL:(NSURL *)mediaURL
            mediaType:(NSString *)mediaType
           completion:(void (^)(NSDictionary *data, NSError *error))completion;

+ (void)fetchIssues:(void (^)(NSDictionary *data, NSError *error))completion;

+ (void)fetchVoidIssue:(id)issueID
               remarks:(NSString *)remarks
            completion:(void (^)(NSDictionary *data, NSError *error))completion;

+ (void)fetchDeleteIssue:(id)issueID
               remarks:(NSString *)remarks
            completion:(void (^)(NSDictionary *data, NSError *error))completion;

+ (void)fetchCommonArea:(void (^)(NSDictionary * _Nullable data, NSError * _Nullable error))completion;

+ (void)fetchGeneralSettings:(void (^)(NSDictionary * _Nullable data, NSError * _Nullable error))completion;

+ (void)fetchDefectMatrix:(void (^)(NSDictionary * _Nullable data, NSError * _Nullable error))completion;

+ (void)fetchProjectList:(void (^)(NSDictionary * _Nullable data, NSError * _Nullable error))completion;

@end

NS_ASSUME_NONNULL_END
