#import “DBManager.h”
#import <sqlite3.h>
#import “FMDatabase.h”
#import “FMDatabaseAdditions.h”
#import “FMDatabaseQueue.h”
#import <SystemConfiguration/SystemConfiguration.h>
#import “SVProgressHUD.h”
//#import “Reachability.h”
static DBManager *sharedInstance = nil;
static FMDatabaseQueue *_queue;
static NSOperationQueue *_writeQueue;
static NSRecursiveLock *_writeQueueLock;
@interface DBManager() {
int n1;
}
@property (nonatomic, strong) NSString *documentsDirectory;
@property (nonatomic, strong) NSString *databaseFilename;
@property (nonatomic, strong) NSMutableArray *arrResults;
@property (nonatomic, strong) NSString *fullFilePath;
@property (nonatomic, strong) FMDatabase *database;
-(void)copyDatabaseIntoDocumentsDirectory;
@end
@implementation DBManager
#pragma mark – Initialization
-(instancetype)initWithDatabaseFilename:(NSString *)dbFilename
{
self = [super init];
if (self) {
// Set the documents directory path to the documentsDirectory property.
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
self.documentsDirectory = [paths objectAtIndex:0];
// Keep the database filename.
self.databaseFilename = dbFilename;
// Copy the database file into the documents directory if necessary.
[self copyDatabaseIntoDocumentsDirectory];
}
return self;
}
+(DBManager*)getSharedInstance
{
if (!sharedInstance) {
sharedInstance = [[super allocWithZone:NULL]init];
NSString *Path=[NSString stringWithFormat:@”%@/Documents/”, NSHomeDirectory()];
sharedInstance.documentsDirectory = Path;
sharedInstance.databaseFilename = @”Vagess.db”;
[sharedInstance copyDatabase:sharedInstance.databaseFilename];
_queue = [FMDatabaseQueue databaseQueueWithPath:sharedInstance.fullFilePath];
_writeQueue = [NSOperationQueue new];
[_writeQueue setMaxConcurrentOperationCount:1];
_writeQueueLock = [NSRecursiveLock new];
}
return sharedInstance;
}
#pragma mark – Private method implementation
-(void)copyDatabaseIntoDocumentsDirectory
{
// Check if the database file exists in the documents directory.
NSString *destinationPath = [self.documentsDirectory stringByAppendingPathComponent:self.databaseFilename];
if (![[NSFileManager defaultManager] fileExistsAtPath:destinationPath]) {
// The database file does not exist in the documents directory, so copy it from the main bundle now.
NSString *sourcePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:self.databaseFilename];
NSError *error;
[[NSFileManager defaultManager] copyItemAtPath:sourcePath toPath:destinationPath error:&error];
// Check if any error occurred during copying and display it.
if (error != nil) {
NSLog(@”%@”, [error localizedDescription]);
}
}
}
-(void) copyDatabase:(NSString *)dbFileName
{
NSFileManager *fmngr = [[NSFileManager alloc] init];
//NSString *filePath = [[NSBundle mainBundle] pathForResource:dbFileName ofType:nil];
NSError *error;
NSString *sourcePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:self.databaseFilename];
self.fullFilePath=[NSString stringWithFormat:@”%@%@”, self.documentsDirectory,dbFileName];
NSLog(@”Full File Path : %@ \n FilePath : %@”,self.fullFilePath,sourcePath);
sharedInstance.database = [FMDatabase databaseWithPath:sharedInstance.fullFilePath];
if(![[NSFileManager defaultManager] fileExistsAtPath:self.fullFilePath])
{
if(![fmngr copyItemAtPath:sourcePath toPath:self.fullFilePath error:&error]) {
NSLog(@”Error creating the database: %@”, [error description]);
}
else{
NSLog(@”Database is copied. %@”,self.fullFilePath);
}
}
else
{
NSLog(@”Database is already EXISTS.”);
}
}
– (BOOL)addtocart:(NSMutableDictionary *)dataList
{
BOOL result;
if ([sharedInstance.database open])
{
NSLog(@”%@”,dataList);
NSString *query=[NSString stringWithFormat:@”INSERT OR IGNORE INTO tbl_Cart (user_id,product_id,after_offer,category_name,has_offer,min_measure,min_quantity,offer_price,offer_type,product_price,product_title,stock_measure,thumb_2,total_stock_in_hand,wishlist,Totalprice,qty) VALUES (‘%@’,’%@’,’%@’,’%@’,’%@’,’%@’,’%@’,’%@’,’%@’,’%@’,’%@’,’%@’,’%@’,’%@’,’%@’,’%@’,’%@’)”,
[[[NSUserDefaults standardUserDefaults] valueForKey:@”Userdeatil”] valueForKey:@”user_id”],
[dataList valueForKey:@”product_id”],
[dataList valueForKey:@”after_offer”],
[dataList valueForKey:@”category_name”],
[dataList valueForKey:@”has_offer”],
[dataList valueForKey:@”min_measure”],
[dataList valueForKey:@”min_quantity”],
[dataList valueForKey:@”offer_price”],
[dataList valueForKey:@”offer_type”],
[dataList valueForKey:@”product_price”],
[dataList valueForKey:@”product_title”],
[dataList valueForKey:@”stock_measure”],
[dataList valueForKey:@”thumb_2″],
[dataList valueForKey:@”total_stock_in_hand”],
[dataList valueForKey:@”wishlist”],
[dataList valueForKey:@”Totalprice”],
[dataList valueForKey:@”qty”]
];
result = [sharedInstance.database executeUpdate:query];
[sharedInstance.database close];
return result;
}
else
{
[sharedInstance.database close];
return false;
}
}
– (BOOL)SaveCategory:(NSMutableDictionary *)dataList
{
BOOL result;
if ([sharedInstance.database open])
{
NSLog(@”%@”,dataList);
NSString *query=[NSString stringWithFormat:@”INSERT OR IGNORE INTO tbl_productDetail (user_id,product_id,after_offer,category_name,has_offer,min_measure,min_quantity,offer_price,offer_type,product_price,product_title,stock_measure,thumb_2,total_stock_in_hand,wishlist,Totalprice,qty) VALUES (‘%@’,’%@’,’%@’,’%@’,’%@’,’%@’,’%@’,’%@’,’%@’,’%@’,’%@’,’%@’,’%@’,’%@’,’%@’,’%@’,’%@’)”,
[[[NSUserDefaults standardUserDefaults] valueForKey:@”Userdeatil”] valueForKey:@”user_id”],
[dataList valueForKey:@”product_id”],
[dataList valueForKey:@”after_offer”],
[dataList valueForKey:@”category_name”],
[dataList valueForKey:@”has_offer”],
[dataList valueForKey:@”min_measure”],
[dataList valueForKey:@”min_quantity”],
[dataList valueForKey:@”offer_price”],
[dataList valueForKey:@”offer_type”],
[dataList valueForKey:@”product_price”],
[dataList valueForKey:@”product_title”],
[dataList valueForKey:@”stock_measure”],
[dataList valueForKey:@”thumb_2″],
[dataList valueForKey:@”total_stock_in_hand”],
[dataList valueForKey:@”wishlist”],
[dataList valueForKey:@”Totalprice”],
[dataList valueForKey:@”qty”]
];
result = [sharedInstance.database executeUpdate:query];
[sharedInstance.database close];
return result;
}
else
{
[sharedInstance.database close];
return false;
}
}
– (BOOL)updatecart:(NSString *)userid qty:(NSString*)counter proudct_id:(NSString*)product
{
BOOL result;
if ([sharedInstance.database open])
{
// NSLog(@”UPDATE wallpaper_Master set wallpaper_img= WHERE wallpaper_id=%i”,wpaper.wallpaper_id);
NSString *query=[[NSString alloc]initWithFormat:@”UPDATE tbl_Cart SET qty = ‘%@’ where user_id == ‘%@’ and product_id == ‘%@'”,counter,userid,product];
result = [sharedInstance.database executeUpdate:query];
[sharedInstance.database close];
return result;
}
else
{
[sharedInstance.database close];
return false;
}
}
– (BOOL)updaterecode:(NSString *)query
{
BOOL result;
if ([sharedInstance.database open])
{
// NSString *query=[[NSString alloc]initWithFormat:@”UPDATE tbl_productDetail SET product_title = ‘%@’,product_image = ‘%@’,thumb_1 = ‘%@’,thumb_2 = ‘%@’,mobile_big = ‘%@’,product_status = ‘%@’,product_price = ‘%@’,product_quantity = ‘%@’,product_in_stock = ‘%@’,product_quantity_measure = ‘%@’,is_wishlist = ‘%@’ where product_id == ‘%@'”,[datalist valueForKey:@”product_title”],[datalist valueForKey:@”product_image”],[datalist valueForKey:@”thumb_1″],[datalist valueForKey:@”thumb_2″],[datalist valueForKey:@”mobile_big”],[datalist valueForKey:@”product_status”],[datalist valueForKey:@”product_price”],[datalist valueForKey:@”product_quantity”],[datalist valueForKey:@”product_in_stock”],[datalist valueForKey:@”product_quantity_measure”],[datalist valueForKey:@”is_wishlist”],[datalist valueForKey:@”product_id”]];
result = [sharedInstance.database executeUpdate:query];
[sharedInstance.database close];
return result;
}
else
{
[sharedInstance.database close];
return false;
}
}
-(BOOL)Cheakexites:(NSString *)userid productid:(NSString*)productid
{
BOOL result=false;
if ([sharedInstance.database open])
{
NSString *query=[NSString stringWithFormat:@”select * from tbl_Cart where user_id == ‘%@’ and product_id == ‘%@'”,userid,productid];
result = [sharedInstance.database executeUpdate:query];
}
else
{
return false;
}
[sharedInstance.database close];
return result;
}
-(BOOL)CheakexitesRecode:(NSString*)productid
{
BOOL result=false;
if ([sharedInstance.database open])
{
NSString *query=[NSString stringWithFormat:@”select * from tbl_productDetail where product_id == ‘%@'”,productid];
result = [sharedInstance.database executeUpdate:query];
}
else
{
return false;
}
[sharedInstance.database close];
return result;
}
#pragma Get Wallpaper List
-(NSMutableArray*)getcartitem:(NSString *)query
{
int flag=0;
NSMutableArray *ResultArray=[[NSMutableArray alloc] init];
if([sharedInstance.database open])
{
flag=-1;
FMResultSet *results = [sharedInstance.database executeQueryWithFormat:query,nil];
while([results next])
{
NSMutableDictionary *dic=[[NSMutableDictionary alloc]init];
[dic setValue:[results stringForColumn:@”user_id”] forKey:@”user_id”];
[dic setValue:[results stringForColumn:@”product_id”] forKey:@”product_id”];
[dic setValue:[results stringForColumn:@”after_offer”] forKey:@”after_offer”];
[dic setValue:[results stringForColumn:@”category_name”] forKey:@”category_name”];
[dic setValue:[results stringForColumn:@”has_offer”] forKey:@”has_offer”];
[dic setValue:[results stringForColumn:@”min_measure”] forKey:@”min_measure”];
[dic setValue:[results stringForColumn:@”min_quantity”] forKey:@”min_quantity”];
[dic setValue:[results stringForColumn:@”offer_price”] forKey:@”offer_price”];
[dic setValue:[results stringForColumn:@”offer_type”] forKey:@”offer_type”];
[dic setValue:[results stringForColumn:@”product_price”] forKey:@”product_price”];
[dic setValue:[results stringForColumn:@”product_title”] forKey:@”product_title”];
[dic setValue:[results stringForColumn:@”stock_measure”] forKey:@”stock_measure”];
[dic setValue:[results stringForColumn:@”thumb_2″] forKey:@”thumb_2″];
[dic setValue:[results stringForColumn:@”total_stock_in_hand”] forKey:@”total_stock_in_hand”];
[dic setValue:[results stringForColumn:@”wishlist”] forKey:@”wishlist”];
[dic setValue:[results stringForColumn:@”Totalprice”] forKey:@”Totalprice”];
[dic setValue:[results stringForColumn:@”qty”] forKey:@”qty”];
[ResultArray addObject:dic];
}
}
else
{
return ResultArray;
}
[sharedInstance.database close];
return ResultArray;
}
-(BOOL)Deleterecode:(NSString *)query
{
BOOL result=false;
if ([sharedInstance.database open])
{
result = [sharedInstance.database executeUpdate:query];
}
else
{
return false;
}
[sharedInstance.database close];
return result;
}
@end