//
//  iSalesNetwork.m
//  RedAnt ERP Mobile
//
//  Created by Ray on 14-6-20.
//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
//

#import "iSalesNetwork.h"
#import "RAUtils.h"
#import "OLDataProvider.h"
#import "Singleton.h"

@implementation iSalesNetwork




+(void) LoadImage:(NSString*) url into:(UIImageView*) container
{
    
    DebugLog(@"LoadImage:(NSString*) url in:(UIImageView*) container");
    
    NSString* file_name=[url lastPathComponent];
    NSData* img_data = [iSalesDB load_cached_img:file_name loadFrom:url];
    if(img_data==nil)
        
    {
        DebugLog(@"IMG NOT CACHED %@",file_name);
        img_data = [NSData dataWithContentsOfURL:[NSURL URLWithString:url]];
        [iSalesDB cache_img:img_data filename:file_name saveTo:nil];
        
        //load from internet;
    }
    
    
    
    if(img_data!=nil)
    {
        UIImage * img =[UIImage imageWithData:img_data];
        
        if(img==nil)
            DebugLog(@"UIIMAGE IS NIL! %@",file_name);
        else
            container.image =img;
        
    }
    else
    {
        DebugLog(@"IMG DOWNLOAD FAILED! %@",file_name);
    }
}
//+(NSData*)fake_json:(NSString*) url
//{
//    NSString* jsonfile = nil;
//    if([url isEqualToString:URL_UPDATE_AUTH])
//    {
//        jsonfile=@"login";
//
//    }
//    else if([url isEqualToString:URL_REQUEST_CATMENU])
//    {
//        jsonfile=@"categorymenu";
//    }
//    else if([url isEqualToString:URL_LOAD_HOME])
//    {
//        jsonfile=@"homepage";
//    }
//    else if([url isEqualToString:URL_SEARCH])
//    {
//        jsonfile=@"search";
//    }
//    else if([url isEqualToString:URL_CATEGORY_LOADMORE])
//    {
//        jsonfile=@"category_more";
//    }else if([url isEqualToString:URL_ITEM_DETAIL])
//    {
//        jsonfile=@"detail";
//    }else if([url isEqualToString:URL_CART])
//    {
//        jsonfile=@"cart";
//    }else if([url isEqualToString:URL_ORDER_LIST])
//    {
//        jsonfile=@"orderlist";
//    }
////    else if([url isEqualToString:URL_ORDER_INFO])
////    {
////        jsonfile=@"orderinfo";
////    }
////    else if([url isEqualToString:URL_ORDER_INFO])
////    {
////        jsonfile=@"orderinfo2label";
////    }
//
//
//
//    NSData* json =[NSData dataWithContentsOfFile:[[NSBundle mainBundle]  pathForResource:jsonfile ofType:@"json" ]];
//    NSMutableString *result = [[NSMutableString alloc] initWithData:json encoding:NSUTF8StringEncoding];
//
//    DebugLog(@"result: \n%@",result);
//    return json;
//}
+(NSData*)get_json : (NSString*) url parameters:(NSMutableDictionary *) params //delegate:(id < NSURLConnectionDelegate >)delegate
{
    int retry = 0;
    
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
    
    if(appDelegate.ipad_perm!=nil)
        [params setValue:appDelegate.ipad_perm forKey:@"ipad_perm"];
    
    [params setValue:appDelegate.build forKey:@"app_ver"];
    
    NSDictionary* infoDict =[[NSBundle mainBundle] infoDictionary];
    NSString* short_version =[infoDict objectForKey:@"CFBundleShortVersionString"];
    [params setValue:short_version forKey:@"app_short_ver"];
    
    UIDevice * dev = [UIDevice currentDevice];
    NSUUID* uuid =dev.identifierForVendor;
#if TARGET_IPHONE_SIMULATOR//模拟器
    [params setValue:@"simulator_uuid" forKey:@"idfv"];
#elif TARGET_OS_IPHONE//真机
    [params setValue:uuid.UUIDString forKey:@"idfv"];
#endif
    
    
    
repeat:
    {
        
        //    return [self fake_json:url];
        
        //    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
        //分界线的标识符
        NSString *TWITTERFON_FORM_BOUNDARY = @"AaB03x";
        //根据url初始化request
        NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]
                                                               cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
                                                           timeoutInterval:JSON_TIMEOUT];
        //分界线 --AaB03x
        NSString *MPboundary=[[NSString alloc]initWithFormat:@"--%@",TWITTERFON_FORM_BOUNDARY];
        //结束符 AaB03x--
        NSString *endMPboundary=[[NSString alloc]initWithFormat:@"%@--",MPboundary];
        //要上传的图片
        //    UIImage *image=[params objectForKey:@"pic"];
        //得到图片的data
        //    NSData* data = UIImagePNGRepresentation(image);
        //http body的字符串
        NSMutableString *body=[[NSMutableString alloc]init];
        
        //    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
        //     [params setValue:@"handset_login" forKey:@"action"];
        //    [headers setValue:[NSString stringWithFormat:@"%d",dataLength] forKey:@"Content-Length"];
        
        //    [params setValue:appDelegate.sessionid forKey:@"sessionid"];
        //   [params setValue:password forKey:@"password"];
        //    [params setValue:[NSString stringWithFormat:@"%d",ver]  forKey:@"auth_ver"];
        
        
        
        //    [headers setValue:headQuerlString forKey:@"param"];
        
        //参数的集合的所有key的集合
        NSArray *keys= [params allKeys];
        DebugLog(@"================parms==================");
        //遍历keys
        for(int i=0;i<[keys count];i++)
        {
            //得到当前key
            NSString *key=[keys objectAtIndex:i];
            //如果key不是pic，说明value是字符类型，比如name：Boris
            if(![key isEqualToString:@"pic"])
            {
                //添加分界线，换行
                [body appendFormat:@"%@\r\n",MPboundary];
                //添加字段名称，换2行
                [body appendFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n",key];
                //添加字段的值
                [body appendFormat:@"%@\r\n",[params objectForKey:key]];
                DebugLog(@"parameter: key=%@   value=%@",key,[params objectForKey:key]);
            }
        }
        DebugLog(@"================parms==================");
        ////添加分界线，换行
        [body appendFormat:@"%@\r\n",MPboundary];
        //声明pic字段，文件名为boris.png
        [body appendFormat:@"Content-Disposition: form-data; name=\"pic\"; filename=\"boris.png\"\r\n"];
        //声明上传文件的格式
        [body appendFormat:@"Content-Type: image/png\r\n\r\n"];
        
        //声明结束符：--AaB03x--
        NSString *end=[[NSString alloc]initWithFormat:@"\r\n%@",endMPboundary];
        //声明myRequestData，用来放入http body
        NSMutableData *myRequestData=[NSMutableData data];
        //将body字符串转化为UTF8格式的二进制
        [myRequestData appendData:[body dataUsingEncoding:NSUTF8StringEncoding]];
        //将image的data加入
        //    [myRequestData appendData:data];
        //加入结束符--AaB03x--
        [myRequestData appendData:[end dataUsingEncoding:NSUTF8StringEncoding]];
        
        //设置HTTPHeader中Content-Type的值
        NSString *content=[[NSString alloc]initWithFormat:@"multipart/form-data; boundary=%@",TWITTERFON_FORM_BOUNDARY];
        //设置HTTPHeader
        [request setValue:content forHTTPHeaderField:@"Content-Type"];
        
        // 关闭keep alive
        [request setValue:@"close" forHTTPHeaderField:@"Connection"];
        //设置Content-Length
        [request setValue:[NSString stringWithFormat:@"%lu", (unsigned long)[myRequestData length]] forHTTPHeaderField:@"Content-Length"];
        //设置http body
        [request setHTTPBody:myRequestData];
        //http method
        [request setHTTPMethod:@"POST"];
        
        
        NSHTTPURLResponse* urlResponse = nil;
        
        NSError *error = nil;
        
        NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];
        
        
        DebugLog(@"url: %@",url);

        DebugLog(@"response: %@",[NSHTTPURLResponse localizedStringForStatusCode:urlResponse.statusCode]);
        
        if (responseData==nil) {
            
//            DebugLog(@"response error:%@", [error localizedDescription]);
            
            
            NSMutableDictionary* ret = [[NSMutableDictionary alloc] init];
            //#define RESULT_FALSE 0
            //#define RESULT_TRUE		 2
            //#define RESULT_NET_ERROR			 -3
            //#define RESULT_NET_NOTAVAILABLE		  -4
            //#define RESULT_ERROR				 -5
            //#define RESULT_LOCALFILE_ERROR			 -7
            //#define RESULT_USERAUTH_ERROR			 -9
            //#define RESULT_UPDATE_USERAUTH_ERROR	 -11
            //#define RESULT_SESSION_EXPIRED			  -13
            //#define RESULT_VER_LOW
            
            //     NSString * moreinfo = error.description ;
            
            NSString* err_msg = [error localizedDescription];
            
            
            //-----------------retry 3 times for error code -1005------------------------
            if(error.code==-1005&&retry<3)
            {
                retry++;
                goto repeat;
                
            }
            //-----------------end retry 3 times for error code -1005------------------------
            
            NSDictionary* error_json = [RAUtils error_dict:error];
            [ret setObject:error_json forKey:@"err_obj"];
            NSString* resp_msg= nil;
            
            if(err_msg.length==0)
            {
                err_msg =[NSHTTPURLResponse localizedStringForStatusCode:urlResponse.statusCode];
                resp_msg = err_msg;
            }
            [ret setValue:[NSString stringWithFormat:@"%d",RESULT_NET_ERROR] forKey:@"result"];
            [ret setValue:err_msg forKey:@"err_msg"];
            [ret setValue:resp_msg forKey:@"resp_msg"];
            [ret setValue:[NSString stringWithFormat:@"%ld",(long)urlResponse.statusCode] forKey:@"resp_code"];
            
            
            NSData *jsonData = [NSJSONSerialization dataWithJSONObject:ret
                                                               options:0
                                                                 error:nil];
            if(![url isEqualToString:URL_ERR_LOG])
            {
                [iSalesNetwork err_log:[RAUtils base64en:[RAUtils dict2string:params]] result:[RAUtils base64en:[RAUtils dict2string:ret]] module:url code:RESULT_NET_ERROR];
            }
            return jsonData;
            
        }
        else
        {
                        NSString* err_msg = [error localizedDescription];
            NSMutableString *str = [[NSMutableString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
            
            DebugLog(@"data string: %@",str);
            NSError *error1 = nil;
            
            NSMutableDictionary* jsobj = [[NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableContainers error:&error1] mutableCopy];
            
            if(jsobj==nil)// 服务器返回不是json
            {
                
                jsobj=[[NSMutableDictionary alloc] init];
                [jsobj setValue:@"1" forKey:@"result"];
                
            }
            
            int result=[[jsobj valueForKey:@"result"] intValue];
            UIApplication * app = [UIApplication sharedApplication];
            AppDelegate *appDelegate = (AppDelegate *)[app delegate];
            NSString* mode =[jsobj valueForKey:@"mode"];
            [appDelegate SetMode:mode];
            switch (result) {
                case 0:
                    [jsobj setValue:MSG_USERAUTH_ERROR forKey:@"err_msg"];
                    break;
                case 1:
                    [jsobj setValue:MSG_ERROR forKey:@"err_msg"];
                    break;
                case 2:
                    [jsobj setValue:MSG_SUCCESS forKey:@"err_msg"];
                    break;
                case 8:
                    [jsobj setValue:[jsobj valueForKey:@"msg"] forKey:@"err_msg"];
                    break;
                case 9:
                    [jsobj setValue:[jsobj valueForKey:@"msg"] forKey:@"err_msg"];
                    break;
                case 99:
                    [jsobj setValue:MSG_TIMEOUT forKey:@"err_msg"];
                    break;
                default:
                    [jsobj setValue:MSG_ERROR forKey:@"err_msg"];
                    break;
            }
            
            
            if([appDelegate.build intValue]< [[jsobj valueForKey:@"min_ver"]intValue])
            {
                [jsobj setValue:@"9" forKey:@"result"];
                [jsobj setValue:MSG_VER_LOW forKey:@"err_msg"];
            }
            
            if(![url isEqualToString:URL_ERR_LOG]&&![url isEqualToString:URL_DOWNLOAD_OFFLINE]/*&&result!=-3*/&&result!=2&&result!=99)
            {
                [iSalesNetwork err_log:[RAUtils base64en:[RAUtils dict2string:params]] result:[RAUtils base64en:str] module:url code:result];
            }
            NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsobj
                                                               options:0
                                                                 error:nil];
            return jsonData;
            
        }
        return responseData;
    }
}


+(NSString*)DataTOjsonString:(id)object
{
    NSString *jsonString = nil;
    NSError *error;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:object
                                                       options:NSJSONWritingPrettyPrinted // Pass 0 if you don't care about the readability of the generated string
                                                         error:&error];
    if (! jsonData) {
        DebugLog(@"Got an error: %@", error);
    } else {
        jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
    }
    return jsonString;
}
//+(NSDictionary*)request_Editor:(NSString*) sourceid editor:(NSString*)editor
//{
//
//}

+(NSDictionary*) delete_portfoliolist:(NSString* ) listid
{
    
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    [params setValue:listid forKey:@"tearsheetsId"];
    //    [params setValue:editor forKey:@"editor"];
    NSData* json = nil;
    if(appDelegate.offline_mode)
    {
        json = [OLDataProvider offline_removePDF:params];
    } else {
        if(![self IsNetworkAvailable])
            return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
        
        json=[self get_json:URL_PORTFOLIOLIST_REMOVE parameters:params];
    }
    if(json!=nil)
    {
        NSError *error=nil;
        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
        
        
        
        return jsobj;
    }
    else
        return nil;
}
+(NSDictionary*) portfolio_remove:(NSString* ) item_ids
{
    
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    [params setValue:item_ids forKey:@"portfolioId"];
    //    [params setValue:editor forKey:@"editor"];
    NSData* json = nil;
    if(appDelegate.offline_mode)
    {
        json = [OLDataProvider offline_removePortfolio:params];
    } else {
        if(![self IsNetworkAvailable])
            return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
        json=[self get_json:URL_PORTFOLIO_REMOVE parameters:params];
    }
    if(json!=nil)
    {
        NSError *error=nil;
        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
        
        
        int result = [[jsobj valueForKey:@"result"] intValue];
        
        if (result==2)
        {
            
            
            appDelegate.port_count =[[jsobj valueForKey:@"portfolio_count"] intValue];
            
            [appDelegate update_count_mark];
        }
        return jsobj;
    }
    else
        return nil;
}
+(NSDictionary*) watchlist_remove:(NSString* ) item_ids
{
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    [params setValue:item_ids forKey:@"collectId"];
    //    [params setValue:editor forKey:@"editor"];
    
    if(appDelegate.offline_mode)
    {
        return [OLDataProvider offline_deletewishlist:params];
    }
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    NSData* json=[self get_json:URL_WATCHLIST_REMOVE parameters:params];
    if(json!=nil)
    {
        NSError *error=nil;
        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
        int result = [[jsobj valueForKey:@"result"] intValue];
        
        if (result==2)
        {
            
            //appDelegate.cart_count = [[jsobj valueForKey:@"cart_count"] intValue];
            appDelegate.wish_count =[[jsobj valueForKey:@"wish_count"] intValue];
            //    appDelegate.port_count =[[jsobj valueForKey:@"portfolio_count"] intValue];
            
            [appDelegate update_count_mark];
        }
        return jsobj;
    }
    else
        return nil;
}
+(NSDictionary*) move_cart2wish:(NSString* ) item_ids
{
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    if(appDelegate.order_code!=nil)
        [params setValue:appDelegate.order_code forKey:@"orderCode"];
    [params setValue:item_ids forKey:@"cartItemId"];
    //    [params setValue:editor forKey:@"editor"];
    NSData* json = nil;
    if(appDelegate.offline_mode)
    {
        json= [OLDataProvider offline_movecart2wish:params];
    }
    else
    {
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    json=[self get_json:URL_CART2WISH parameters:params];
    }
    if(json!=nil)
    {
        NSError *error=nil;
        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
        int result = [[jsobj valueForKey:@"result"] intValue];
        
        if (result==2)
        {
            
            //appDelegate.cart_count = [[jsobj valueForKey:@"cart_count"] intValue];
            appDelegate.wish_count =[[jsobj valueForKey:@"wish_count"] intValue];
            //    appDelegate.port_count =[[jsobj valueForKey:@"portfolio_count"] intValue];
            
            [appDelegate update_count_mark];
        }
        return jsobj;
    }
    else
        return nil;
}
+(NSDictionary*) move_wish2cart:(NSString* ) item_ids
{
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    if(appDelegate.order_code!=nil)
        [params setValue:appDelegate.order_code forKey:@"orderCode"];
    [params setValue:item_ids forKey:@"collectId"];
    //    [params setValue:editor forKey:@"editor"];
    NSData *json = nil;
    if(appDelegate.offline_mode)
    {
        json = [OLDataProvider offline_movewish2cart:params];
    } else {
        if(![self IsNetworkAvailable])
            return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
        
        json=[self get_json:URL_WISH2CART parameters:params];
    }

    if(json!=nil)
    {
        NSError *error=nil;
        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
        int result = [[jsobj valueForKey:@"result"] intValue];
        
        if (result==2)
        {
            
            //appDelegate.cart_count = [[jsobj valueForKey:@"cart_count"] intValue];
            appDelegate.wish_count =[[jsobj valueForKey:@"wish_count"] intValue];
            //    appDelegate.port_count =[[jsobj valueForKey:@"portfolio_count"] intValue];
            
            [appDelegate update_count_mark];
        }
        return jsobj;
    }
    else
        return nil;
}

+(NSDictionary*) cart_remove:(NSString* ) item_ids
{
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
    if(appDelegate.order_code!=nil)
        [params setValue:appDelegate.order_code forKey:@"orderCode"];
    [params setValue:item_ids forKey:@"cartItemId"];
    //    [params setValue:editor forKey:@"editor"];
    NSData* json=nil;
    if(appDelegate.offline_mode)
    {
        json= [OLDataProvider offline_cartremove:params];
    }
    else
    {
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    json=[self get_json:URL_CART_REMOVE parameters:params];
    }
    if(json!=nil)
    {
        NSError *error=nil;
        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
        
        int result = [[jsobj valueForKey:@"result"] intValue];
        
        if (result==2)
        {
            
            appDelegate.cart_count = [[jsobj valueForKey:@"cart_count"] intValue];
            
            
            [appDelegate update_count_mark];
        }
        return jsobj;
    }
    else
        return nil;
}


//+(NSDictionary*) cart_check:(NSString* ) item_ids
//{
//    return nil;
//    if(![self IsNetworkAvailable])
//        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
//    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
//    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
//    if(appDelegate.user!=nil)
//        [params setValue:appDelegate.user forKey:@"user"];
//    if(appDelegate.contact_id!=nil)
//        [params setValue:appDelegate.contact_id forKey:@"contactId"];
//    if(appDelegate.password!=nil)
//        [params setValue:appDelegate.password forKey:@"password"];
//    [params setValue:item_ids forKey:@"cartItemId"];
//    //    [params setValue:editor forKey:@"editor"];
//    if(appDelegate.offline_mode)
//    {
//        return [OLDataProvider offline_notimpl];
//    }
//    NSData* json=[self get_json:URL_CART_CHECK parameters:params];
//    if(json!=nil)
//    {
//        NSError *error=nil;
//        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
//        return jsobj;
//    }
//    else
//        return nil;
//}

+(NSDictionary*)create_Address:(NSMutableDictionary*)params
{
    //    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    //    [params setValue:sourceid forKey:@"sourceid"];
    //    [params setValue:editor forKey:@"editor"];
    NSData* json=nil;
    
    if(appDelegate.offline_mode)
    {
        json= [OLDataProvider offline_saveaddr:params];
    }
    else
    {
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    json =[self get_json:URL_ADDRESS_SAVE parameters:params];
    }
    if(json!=nil)
    {
        NSError *error=nil;
        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
        return jsobj;
    }
    else
        return nil;
    
}
+(NSDictionary*)copy_Order:(NSString*) order_code
{
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    //    NSString* ssaved = @"false";
    //     if(saved)
    //         ssaved=@"true";
    //  [params setValue:@"true" forKey:@"saved"];
    [params setValue:order_code forKey:@"code"];
    //    [params setValue:sourceid forKey:@"sourceid"];
    //    [params setValue:editor forKey:@"editor"];
    NSData* json=nil;
    if(appDelegate.offline_mode)
    {
        json= [OLDataProvider offline_copyorder:params];
    }
    else
    {
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    json=[self get_json:URL_COPY_ORDER parameters:params];
    }
    if(json!=nil)
    {
        NSError *error=nil;
        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
        return jsobj;
    }
    else
        return nil;
    
}
+(NSDictionary*)sign_Order:(NSString*) order_code path:(NSString*)path
{
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    //    NSString* ssaved = @"false";
    //     if(saved)
    //         ssaved=@"true";
    //  [params setValue:@"true" forKey:@"saved"];
    [params setValue:order_code forKey:@"orderCode"];
    [params setValue:path forKey:@"picpath"];
    //    [params setValue:sourceid forKey:@"sourceid"];
    //    [params setValue:editor forKey:@"editor"];
    NSData* json=nil;
    if(appDelegate.offline_mode)
    {
        json= [OLDataProvider offline_signorder:params];
    }
    else
    {
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    json=[self get_json:URL_SIGN_ORDER parameters:params];
    }
    if(json!=nil)
    {
        NSError *error=nil;
        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
        return jsobj;
    }
    else
        return nil;
    
}
+(NSDictionary*)commit_Order:(NSString*) order_code //saved:(bool) saved
{
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    //    NSString* ssaved = @"false";
    //     if(saved)
    //         ssaved=@"true";
    [params setValue:@"true" forKey:@"saved"];
    [params setValue:order_code forKey:@"orderCode"];
    //    [params setValue:sourceid forKey:@"sourceid"];
    //    [params setValue:editor forKey:@"editor"];
    
    NSData* json = nil;
    
    if(appDelegate.offline_mode)
    {
        json= [OLDataProvider offline_submitorder:params];
    }
    else
    {
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    json=[self get_json:URL_COMMIT_ORDER parameters:params];
    }
    if(json!=nil)
    {
        NSError *error=nil;
        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
        return jsobj;
    }
    else
        return nil;
    
}
+(NSDictionary*)open_Order:(NSString*) order_code
{
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    //    if(appDelegate.contact_id!=nil)
    //        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
    [params setValue:order_code forKey:@"orderCode"];
    //    [params setValue:sourceid forKey:@"sourceid"];
    //    [params setValue:editor forKey:@"editor"];
    
    NSData* json=nil;
    if(appDelegate.offline_mode)
    {
        json=[OLDataProvider offline_editorder:params];
        
    }
    else
    {
        if(![self IsNetworkAvailable])
            return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
        
        json=[self get_json:URL_OPEN_ORDER parameters:params];
    }
    if(json!=nil)
    {
        NSError *error=nil;
        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
        int result = [[jsobj valueForKey:@"result"] intValue];
        
        if (result==2)
        {
            
            appDelegate.cart_count = [[jsobj valueForKey:@"cart_count"] intValue];
            //appDelegate.wish_count =[[jsobj valueForKey:@"wish_count"] intValue];
            //    appDelegate.port_count =[[jsobj valueForKey:@"portfolio_count"] intValue];
            
            [appDelegate update_count_mark];
        }
        
        return jsobj;
    }
    else
        return nil;
}

+(NSDictionary*)delete_Order:(NSString*) order_id
{
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    //    if(appDelegate.contact_id!=nil)
    //        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
    [params setValue:order_id forKey:@"orderId"];
    //    [params setValue:sourceid forKey:@"sourceid"];
    //    [params setValue:editor forKey:@"editor"];
    if(appDelegate.offline_mode)
    {
        return [OLDataProvider offline_notimpl];
    }
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    NSData* json=[self get_json:URL_DELETE_ORDER parameters:params];
    if(json!=nil)
    {
        NSError *error=nil;
        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
        
        
        return jsobj;
    }
    else
        return nil;
}

+(NSDictionary*)cancel_Order:(NSString*) order_id order_code:(NSString*) order_code
{
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    //    if(appDelegate.contact_id!=nil)
    //        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
    [params setValue:order_id forKey:@"orderId"];
    [params setValue:order_code forKey:@"orderCode"];
    //    [params setValue:sourceid forKey:@"sourceid"];
    //    [params setValue:editor forKey:@"editor"];
    NSData* json=nil;
    if(appDelegate.offline_mode)
    {
        json=[OLDataProvider offline_cancelorder:params];
    }
    else
    {
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    json=[self get_json:URL_CANCEL_ORDER parameters:params];
    }
    if(json!=nil)
    {
        NSError *error=nil;
        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
        
        
        return jsobj;
    }
    else
        return nil;
}
+(NSDictionary*)release_Order:(NSString*) order_code
{
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    //    if(appDelegate.contact_id!=nil)
    //        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
    [params setValue:order_code forKey:@"orderCode"];
    //    [params setValue:sourceid forKey:@"sourceid"];
    //    [params setValue:editor forKey:@"editor"];
    NSData* json=nil;
    if(appDelegate.offline_mode)
    {
        json= [OLDataProvider offline_resetorder:params];
    }
    else
    {
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    json=[self get_json:URL_RELEASE_ORDER parameters:params];
    }
    if(json!=nil)
    {
        NSError *error=nil;
        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
        if([[jsobj valueForKey:@"result"]intValue]==2)
        {    [appDelegate SetSo:nil];
            
            
            appDelegate.cart_count = [[jsobj valueForKey:@"cart_count"] intValue];
            //appDelegate.wish_count =[[jsobj valueForKey:@"wish_count"] intValue];
            //    appDelegate.port_count =[[jsobj valueForKey:@"portfolio_count"] intValue];
            
            [appDelegate update_count_mark];
        }
        return jsobj;
    }
    else
        return nil;
}
+(NSDictionary*)update_OrderCustomer:(NSString*) order_code customerinfo:(NSMutableDictionary*)info
{
    //    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [info setValue:appDelegate.user forKey:@"user"];
    //    if(appDelegate.contact_id!=nil)
    //        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [info setValue:appDelegate.password forKey:@"password"];
    
    [info setValue:order_code forKey:@"orderCode"];
    //    [params setValue:sourceid forKey:@"sourceid"];
    //    [params setValue:editor forKey:@"editor"];
    if(appDelegate.offline_mode)
    {
        return [OLDataProvider offline_notimpl];
    }
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    NSData* json=[self get_json:URL_UPDATE_ORDERCUSTOMER parameters:info];
    if(json!=nil)
    {
        NSError *error=nil;
        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
        return jsobj;
    }
    else
        return nil;
}
+(NSDictionary*)commoneditor_partialrefresh: (NSMutableDictionary*)params url:(NSString*)url
{
    //    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
    //    if(appDelegate.order_code!=nil)
    //        [params setValue:appDelegate.order_code forKey:@"orderCode"];
    
    //    NSDictionary* customerinfo= appDelegate.customerInfo;
    //
    //    NSArray* keys=[customerinfo allKeys];
    //    for(int i=0;i<keys.count;i++)
    //    {
    //        [params setValue:[customerinfo valueForKey:(NSString*)keys[i]] forKey:keys[i] ];
    //    }
    //
    //    [params setValue:sourceid forKey:@"sourceid"];
    //    [params setValue:editor forKey:@"editor"];
    if(appDelegate.offline_mode)
    {
        params[@"offline_Command"]=url;
        return [OLDataProvider offline_commoneditor_partialrefresh:params];
    }
    
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    NSData* json=[self get_json:url parameters:params];
    if(json!=nil)
    {
        NSError *error=nil;
        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
        if([[jsobj valueForKey:@"result"]intValue]==2)
            [appDelegate SetSo:nil];
        
        
        return jsobj;
    }
    else
        return nil;
}
+(NSDictionary*)saveandcommit_Order:(NSMutableDictionary*)params
{
    //    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
    if(appDelegate.order_code!=nil)
        [params setValue:appDelegate.order_code forKey:@"orderCode"];
    
    //    NSDictionary* customerinfo= appDelegate.customerInfo;
    //
    //    NSArray* keys=[customerinfo allKeys];
    //    for(int i=0;i<keys.count;i++)
    //    {
    //        [params setValue:[customerinfo valueForKey:(NSString*)keys[i]] forKey:keys[i] ];
    //    }
    //
    //    [params setValue:sourceid forKey:@"sourceid"];
    //    [params setValue:editor forKey:@"editor"];
    NSData* json=nil;
    if(appDelegate.offline_mode)
    {
        json=[OLDataProvider offline_submitorder:params];
    }
    else
    {
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    json=[self get_json:URL_COMMIT_ORDER parameters:params];
    }
    if(json!=nil)
    {
        NSError *error=nil;
        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
        if([[jsobj valueForKey:@"result"]intValue]==2)
            [appDelegate SetSo:nil];
        
        
        return jsobj;
    }
    else
        return nil;
    
}
+(NSDictionary*)update_Customer:(NSMutableDictionary*)params
{
    //    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    //    if(![appDelegate.order_customer_id isEqualToString: appDelegate.contact_id]&& appDelegate.order_customer_id!=nil)
    //        [params setValue:appDelegate.order_customer_id forKey:@"contactId"];
    //    else
    
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
    //    NSDictionary* customerinfo=nil;
    
    //    if(![[appDelegate.customerInfo valueForKey:@"customer_cid" ] isEqualToString: [appDelegate.customerInfo valueForKey:@"customer_cid" ]]&& appDelegate.order_customer_id!=nil)
    //        [params setValue:appDelegate.order_customer_id forKey:@"contactId"];
    //    else
    //        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    //
    //    appDelegate.customerInfo;
    
    //    NSArray* keys=[customerinfo allKeys];
    //    for(int i=0;i<keys.count;i++)
    //    {
    //        [params setValue:[customerinfo valueForKey:(NSString*)keys[i]] forKey:keys[i] ];
    //    }
    
    //    [params setValue:sourceid forKey:@"sourceid"];
    //    [params setValue:editor forKey:@"editor"];
    
    
    NSData* json=nil;
    if(appDelegate.offline_mode)
    {
        json= [OLDataProvider offline_saveContact:params];
    }
    else
    {
        if(![self IsNetworkAvailable])
            return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
        
        json=[self get_json:URL_CUSTOMER_UPDATE parameters:params];
    }
    
    if(json!=nil)
    {
        NSError *error=nil;
        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
        return jsobj;
    }
    else
        return nil;
    
}
+(NSDictionary*)save_newCustomer:(NSMutableDictionary*)params
{
    //    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    //    if(![appDelegate.order_customer_id isEqualToString: appDelegate.contact_id]&& appDelegate.order_customer_id!=nil)
    //        [params setValue:appDelegate.order_customer_id forKey:@"contactId"];
    //    else
    
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
    //    NSDictionary* customerinfo=nil;
    
    //    if(![[appDelegate.customerInfo valueForKey:@"customer_cid" ] isEqualToString: [appDelegate.customerInfo valueForKey:@"customer_cid" ]]&& appDelegate.order_customer_id!=nil)
    //        [params setValue:appDelegate.order_customer_id forKey:@"contactId"];
    //    else
    //        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    //
    //    appDelegate.customerInfo;
    
    //    NSArray* keys=[customerinfo allKeys];
    //    for(int i=0;i<keys.count;i++)
    //    {
    //        [params setValue:[customerinfo valueForKey:(NSString*)keys[i]] forKey:keys[i] ];
    //    }
    
    //    [params setValue:sourceid forKey:@"sourceid"];
    //    [params setValue:editor forKey:@"editor"];
    NSData* json=nil;
    if(appDelegate.offline_mode)
    {
        json= [OLDataProvider offline_saveNewContact:params];
    }
    else
    {
        if(![self IsNetworkAvailable])
            return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
        
        json=[self get_json:URL_CUSTOMER_SAVE parameters:params];
    }
    
    if(json!=nil)
    {
        NSError *error=nil;
        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
        return jsobj;
    }
    else
        return nil;
    
}

+(NSDictionary*)save_Order:(NSMutableDictionary*)params
{
    //    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    //    if(![appDelegate.order_customer_id isEqualToString: appDelegate.contact_id]&& appDelegate.order_customer_id!=nil)
    //        [params setValue:appDelegate.order_customer_id forKey:@"contactId"];
    //    else
    
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
    if(appDelegate.order_code!=nil)
        [params setValue:appDelegate.order_code forKey:@"orderCode"];
    
    //    NSDictionary* customerinfo=nil;
    
    //    if(![[appDelegate.customerInfo valueForKey:@"customer_cid" ] isEqualToString: [appDelegate.customerInfo valueForKey:@"customer_cid" ]]&& appDelegate.order_customer_id!=nil)
    //        [params setValue:appDelegate.order_customer_id forKey:@"contactId"];
    //    else
    //        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    //
    //    appDelegate.customerInfo;
    
    //    NSArray* keys=[customerinfo allKeys];
    //    for(int i=0;i<keys.count;i++)
    //    {
    //        [params setValue:[customerinfo valueForKey:(NSString*)keys[i]] forKey:keys[i] ];
    //    }
    
    //    [params setValue:sourceid forKey:@"sourceid"];
    //    [params setValue:editor forKey:@"editor"];
    NSData* json=nil;
    
    if(appDelegate.offline_mode)
    {
        json= [OLDataProvider offline_saveorder:params];
    }
    else
    {
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    json=[self get_json:URL_SAVE_ORDER parameters:params];
    }
    if(json!=nil)
    {
        NSError *error=nil;
        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
        
        [appDelegate SetSo:[jsobj valueForKey:@"so#"]];
        return jsobj;
    }
    else
        return nil;
    
}
+(NSDictionary*)request_Editor:(NSString*) request_url params:(NSMutableDictionary*)params
{
    //    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    
    
    //    if(![appDelegate.order_customer_id isEqualToString: appDelegate.contact_id]&& appDelegate.order_customer_id!=nil)
    //        [params setValue:appDelegate.order_customer_id forKey:@"contactId"];
    //    else
    
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
    if(appDelegate.order_code!=nil)
        [params setValue:appDelegate.order_code forKey:@"orderCode"];
    //    [params setValue:sourceid forKey:@"sourceid"];
    //    [params setValue:editor forKey:@"editor"];
    DebugLog(@"request editor url:%@",request_url);
    
    NSData* json = nil;
    if(appDelegate.offline_mode)
    {
        if([request_url isEqualToString:URL_NEW_CUSTOMER])
        {
            json= [OLDataProvider offline_createContact:params];
        }
        else if([request_url isEqualToString:URL_EDIT_CUSTOMER])
        {
            json= [OLDataProvider offline_editContact:params];
        }
        else if([request_url isEqualToString:URL_CUSTOMER_ADV_SEARCH])
        {
            json= [OLDataProvider offline_contactAdvancedSearch:params];
        }
        else if([request_url isEqualToString:URL_CARTDELIVERY])
        {
            json= [OLDataProvider offline_placeorder:params];
        }
        else if([request_url isEqualToString:URL_ADDRESS_EDOTOR])
        {
            json= [OLDataProvider offline_addreditor:params];
        }
        else if ([request_url isEqualToString:URL_DM_PARAMS]){
            json = [OLDataProvider offline_createTearSheet:params];
        }
        
        else
            return [OLDataProvider offline_notimpl];
    }
    else
    {
        if(![self IsNetworkAvailable])
            return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
        
        if([request_url isEqualToString:URL_CARTDELIVERY])
        {
            NSError *error=nil;
            
            NSString * uuid= [[NSUUID UUID] UUIDString];
            params[@"resultSerial"]=uuid;
            
            for(int i=0;i<150;i++)
            {
                //           NSMutableDictionary* result_params = [[NSMutableDictionary alloc]init];
                //            result_params[@"resultSerial"]=uuid;
                json=[self get_json:request_url parameters:params];
                if(json!=nil)
                {
                    
                    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
                    if([jsobj[@"result"] intValue]==2 || [jsobj[@"result"] intValue] == 8)
                    {
                        break;
                    }
                }
                sleep(2);
            }
        }
        else
            json =[self get_json:request_url parameters:params];
    }
    if(json!=nil)
    {
        NSError *error=nil;
        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
        return jsobj;
    }
    else
        return nil;
}
//+(NSDictionary*)request_OrderInfo:(NSString*) orderid
//{
//    if(![self IsNetworkAvailable])
//        return nil;
//    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
//    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
//    if(appDelegate.user!=nil)
//        [params setValue:appDelegate.user forKey:@"user"];
//    if(appDelegate.password!=nil)
//        [params setValue:appDelegate.password forKey:@"password"];
//    [params setValue:orderid forKey:@"orderid"];
//    NSData* json=[self get_json:URL_ORDER_INFO parameters:params];
//    NSError *error=nil;
//    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
//    return jsobj;
//}
+(NSDictionary*)request_OrderList:(int ) offset limit :(int)limit keywords :(NSString* ) keywords status:(NSString*) status_code customer:(NSString*) customer is_merged:(BOOL) isMerged
{
    
    
    
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
    [params setValue:[NSString stringWithFormat:@"%d",offset ] forKey:@"offset"];
    [params setValue:[NSString stringWithFormat:@"%d",limit ] forKey:@"limit"];
    [params setValue:keywords forKey:@"keyWord"];
    [params setValue:customer forKey:@"customer_filter"];
    [params setValue:[NSNumber numberWithBool:isMerged] forKey:@"isMerged"];
    
    [params setValue:status_code forKey:@"orderStatus"];
    NSData* json=nil;
    if(appDelegate.offline_mode)
    {
        json= [OLDataProvider offline_orderlist:params];
    }
    else
    {
        if(![self IsNetworkAvailable])
            return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
        
        json=[self get_json:URL_ORDER_LIST parameters:params];
    }
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    return jsobj;
}


+(NSDictionary*)request_PDFList:(int ) offset limit:(int)limit keywords:(NSString* ) keywords
{
    
    
    
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    //    [params setValue:[NSString stringWithFormat:@"%d",price_template]  forKey:@"price_template"];
    //    [params setValue:[NSString stringWithFormat:@"%d",customid]  forKey:@"custom_id"];
    //    [params setValue:[NSString stringWithFormat:@"%@",category]  forKey:@"category"];
    //    [params setValue:[NSString stringWithFormat:@"%d",sort_by]  forKey:@"sort_by"];
    //    [params setValue:filter forKey:@"filter"];
    [params setValue:keywords forKey:@"keyWord"];
    
    [params setValue:[NSString stringWithFormat:@"%d",limit]  forKey:@"limit"];
    [params setValue:[NSString stringWithFormat:@"%d",offset]  forKey:@"offset"];

    NSData* json = nil;
    if(appDelegate.offline_mode)
    {
        json = [OLDataProvider offline_pdfList:params];
    } else {
        if(![self IsNetworkAvailable])
            return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
        
        json=[self get_json:URL_DM_LIST parameters:params];
    }
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    return jsobj;
    
}
+(NSString*) create_portfolio:(NSMutableDictionary*)params
{    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
        if(appDelegate.offline_mode)
        {


            NSData*json = [OLDataProvider offline_direct_save_TearSheet:params];
            if(json==nil)
                return nil;
            NSError *error=nil;
            NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
            
            return jsobj[@"pdf_path"];
        }
        else
        {
            return nil;
        }
}
+(NSDictionary*)direct_save_TearSheet:(NSMutableDictionary*)params//(NSString*) request_url name:(NSString*)name delete:(NSString* )ids note:(NSString* )saveNote modelIds:(NSDictionary *)modelIds
{
    NSMutableDictionary* off_params = [params mutableCopy];;
    
    params[@"off_params"]=[RAUtils dict2string:off_params];;
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    /*
    [params setValue:request_url forKey:@"pdfUrl"];
    [params setValue:name forKey:@"pdfName"];
    [params setValue:ids forKey:@"itemIds"];
    [params setValue:saveNote forKey:@"pdfNote"];
    [params setValue:[modelIds objectForKey:@"product_ids"] forKey:@"product_ids"];
    [params setValue:[modelIds objectForKey:@"item_ids"] forKey:@"item_ids"];
    [params setValue:[modelIds objectForKey:@"remove_item"] forKey:@"remove_item"];
    */
    NSData* json= nil;
    
    if(appDelegate.offline_mode)
    {
        json = [OLDataProvider offline_direct_save_TearSheet:params];
    }
    else
    {
        if(![self IsNetworkAvailable])
            return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
        
        json=[self get_json:URL_REQUEST_DM parameters:params];

        NSError *error=nil;
        
        NSString * uuid= [[NSUUID UUID] UUIDString];
        params[@"resultSerial"]=uuid;
        
        for(int i=0;i<150;i++)
        {
            //           NSMutableDictionary* result_params = [[NSMutableDictionary alloc]init];
            //            result_params[@"resultSerial"]=uuid;
            json=[self get_json:URL_REQUEST_DM parameters:params];
            if(json!=nil)
            {
                
                NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
                if([jsobj[@"result"] intValue]==2)
                {
                    break;
                }
            }
            sleep(5);
        }

    }
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    return jsobj;
}
+(NSDictionary*)request_TearSheet:(NSMutableDictionary*)params//(NSString*) request_url
{
//    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
//    [params setValue:request_url forKey:@"pdfUrl"];
    NSData* json= nil;
    if(appDelegate.offline_mode)
    {
        json= [OLDataProvider offline_request_tearsheet:params];
    }
    else
    {
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
        NSError *error=nil;
        
        NSString * uuid= [[NSUUID UUID] UUIDString];
        params[@"resultSerial"]=uuid;
        
        for(int i=0;i<150;i++)
        {
            //           NSMutableDictionary* result_params = [[NSMutableDictionary alloc]init];
            //            result_params[@"resultSerial"]=uuid;
            json=[self get_json:URL_REQUEST_DM parameters:params];
            if(json!=nil)
            {
                
                NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
                if([jsobj[@"result"] intValue]==2)
                {
                    break;
                }
            }
            sleep(5);
        }
    }
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    return jsobj;
}
+(NSDictionary*)save_TearSheet:(NSMutableDictionary *)params//(NSString*) path name:(NSString*)name delete:(NSString* )ids note:(NSString*)note configureParams:(NSString *)configureParams modelIds:(NSDictionary *)modelIds
{
    
    
    NSMutableDictionary* off_params = [params mutableCopy];;
    
    params[@"off_params"]=[RAUtils dict2string:off_params];
  //  NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
   /*
    [params setValue:path forKey:@"pdfPath"];
    [params setValue:name forKey:@"pdfName"];
    [params setValue:note forKey:@"pdfNote"];
    [params setValue:ids forKey:@"itemIds"];
    [params setValue:configureParams forKey:@"configureParams"];
    [params setValue:[modelIds objectForKey:@"product_ids"] forKey:@"product_ids"];
    [params setValue:[modelIds objectForKey:@"item_ids"] forKey:@"item_ids"];
    [params setValue:[modelIds objectForKey:@"remove_item"] forKey:@"remove_item"];
    */
    NSData* json = nil;
    if(appDelegate.offline_mode)
    {
        json = [OLDataProvider offline_save_TearSheet:params];
    } else {
        if(![self IsNetworkAvailable])
            return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
        
        json=[self get_json:URL_SAVE_DM parameters:params];
    }
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    return jsobj;
}
+(NSDictionary*)err_log:(NSString*) up_params result:(NSString*)result module:(NSString*) module code:(int) code//device:(NSString*) device
{
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    
    [params setValue:up_params forKey:@"upparam"];
    
    [params setValue:[NSNumber numberWithInt:code ] forKey:@"code"];
    
    [params setValue:result forKey:@"result"];
    [params setValue:module forKey:@"interfac"];
    
    [params setValue:[RAUtils base64en:[RAUtils dict2string: [RAUtils device_info]]] forKey:@"device"];
    
    
    //     [params setValue:module forKey:@"module"];
    
    //  [[UIDevice currentDevice]  name];
    
//    if(appDelegate.offline_mode)
//    {
//        return [OLDataProvider offline_notimpl];
//    }
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    NSData* json=[self get_json:URL_ERR_LOG parameters:params];
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    return jsobj;
}


+(NSDictionary*)request_ContactList:(int) offset limit:(int)limit keywords:(NSString*) keywords type:(NSString*) contact_type adv_search:(NSDictionary*)upparams
{
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    
    if(upparams!=nil)
        params = [upparams mutableCopy];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    
    if(![appDelegate.order_customer_id isEqualToString: appDelegate.contact_id]&& appDelegate.order_customer_id!=nil)
        [params setValue:appDelegate.order_customer_id forKey:@"contactId"];
    else
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
    [params setValue:[NSString stringWithFormat:@"%d",offset ] forKey:@"offset"];
    [params setValue:[NSString stringWithFormat:@"%d",limit ] forKey:@"limit"];
    [params setValue:contact_type forKey:@"contactType"];
    [params setValue:keywords forKey:@"keyword"];
    
    NSString* url=nil;
    if([contact_type isEqualToString:@"Sales_Order_Ship_To"])
        url=URL_SHIPTO_LIST;
    else
        url=URL_CONTACT_LIST;
    
    if(appDelegate.offline_mode)
        return [OLDataProvider offline_contactlist:params];
    
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    NSData* json=[self get_json:url parameters:params];
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    return jsobj;
}
+(NSDictionary*)request_OrderDetail:(NSString* ) orderid
{
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
    [params setValue:orderid forKey:@"orderId"];
    //    [params setValue:[NSString stringWithFormat:@"%d",limit ] forKey:@"limit"];
    NSData* json=nil;
    if(appDelegate.offline_mode)
    {
        json= [OLDataProvider offline_orderdetail:params];
    }
    else
    {
        if(![self IsNetworkAvailable])
            return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];

            NSError *error=nil;
            
            NSString * uuid= [[NSUUID UUID] UUIDString];
            params[@"resultSerial"]=uuid;
            
            for(int i=0;i<150;i++)
            {
                //           NSMutableDictionary* result_params = [[NSMutableDictionary alloc]init];
                //            result_params[@"resultSerial"]=uuid;
                json=[self get_json:URL_ORDER_DETAIL parameters:params];
                if(json!=nil)
                {
                    
                    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
                    if([jsobj[@"result"] intValue]==2)
                    {
                        break;
                    }
                }
                sleep(2);
            }
        

    }
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    return jsobj;
}
+(NSDictionary*) add_toCart:(NSString* ) item_id count:(int) count
{
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
    if(appDelegate.order_code!=nil)
        [params setValue:appDelegate.order_code forKey:@"orderCode"];
    [params setValue:item_id forKey:@"product_id"];
    [params setValue:[NSString stringWithFormat:@"%d",count]  forKey:@"count"];
    
    
    NSDictionary* customerinfo= appDelegate.customerInfo;
    
    NSArray* keys=[customerinfo allKeys];
    for(int i=0;i<keys.count;i++)
    {
        [params setValue:[customerinfo valueForKey:(NSString*)keys[i]] forKey:keys[i] ];
    }
    
    NSData* json=nil;
    if(appDelegate.offline_mode)
    {
        json=[OLDataProvider offline_add2cart:params];
    }
    else
    {
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    json=[self get_json:URL_ADD_TO_CART parameters:params];
    }
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    
    
    
    int result = [[jsobj valueForKey:@"result"] intValue];
    
    if (result==2)
    {
        
        appDelegate.cart_count = [[jsobj valueForKey:@"cart_count"] intValue];
        //    appDelegate.wish_count =[[jsobj valueForKey:@"wish_count"] intValue];
        //    appDelegate.port_count =[[jsobj valueForKey:@"portfolio_count"] intValue];
        
        [appDelegate update_count_mark];
    }
    
    return jsobj;
}

+(NSDictionary*) add_toCart_byName:(NSString* ) model_name
{
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
    if(appDelegate.order_code!=nil)
        [params setValue:appDelegate.order_code forKey:@"orderCode"];
    [params setValue:model_name forKey:@"product_name"];
    [params setValue:[NSString stringWithFormat:@"%d",-1]  forKey:@"count"];
    
    
    NSDictionary* customerinfo= appDelegate.customerInfo;
    
    NSArray* keys=[customerinfo allKeys];
    for(int i=0;i<keys.count;i++)
    {
        [params setValue:[customerinfo valueForKey:(NSString*)keys[i]] forKey:keys[i] ];
    }
    NSData* json=nil;
    if(appDelegate.offline_mode)
    {
        json= [OLDataProvider offline_add2cartbyname:params];
    }
    else
    {
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    json=[self get_json:URL_ADD_TO_CART parameters:params];
    }
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    
    
    
    int result = [[jsobj valueForKey:@"result"] intValue];
    
    if (result==2||result==8)
    {
        
        appDelegate.cart_count = [[jsobj valueForKey:@"cart_count"] intValue];
        //    appDelegate.wish_count =[[jsobj valueForKey:@"wish_count"] intValue];
        //    appDelegate.port_count =[[jsobj valueForKey:@"portfolio_count"] intValue];
        
        [appDelegate update_count_mark];
    }
    
    return jsobj;
}

//+(NSDictionary*) new_Customer
//{
//    if(![self IsNetworkAvailable])
//        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
//    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
//    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
//    if(appDelegate.user!=nil)
//        [params setValue:appDelegate.user forKey:@"user"];
////    if(appDelegate.contact_id!=nil)
////        [params setValue:appDelegate.contact_id forKey:@"contactId"];
//    if(appDelegate.password!=nil)
//        [params setValue:appDelegate.password forKey:@"password"];
//
////    if(appDelegate.order_code!=nil)
////        [params setValue:appDelegate.order_code forKey:@"orderCode"];
//
//
//    NSDictionary* customerinfo= appDelegate.customerInfo;
//
//    NSArray* keys=[customerinfo allKeys];
//    for(int i=0;i<keys.count;i++)
//    {
//        [params setValue:[customerinfo valueForKey:(NSString*)keys[i]] forKey:keys[i] ];
//    }
//
//    NSData* json=[self get_json:URL_CUSTOMER_EDIT parameters:params];
//    if(json==nil)
//        return nil;
//    NSError *error=nil;
//    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
//    return jsobj;
//}
+(NSDictionary*) new_Order
{
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
    if(appDelegate.order_code!=nil)
        [params setValue:appDelegate.order_code forKey:@"orderCode"];
    
    
    NSDictionary* customerinfo= appDelegate.customerInfo;
    
    NSArray* keys=[customerinfo allKeys];
    for(int i=0;i<keys.count;i++)
    {
        [params setValue:[customerinfo valueForKey:(NSString*)keys[i]] forKey:keys[i] ];
    }
    
    NSData* json = nil;
    if(appDelegate.offline_mode)
    {
        json= [OLDataProvider offline_createorder:params];
    }
    else
    {
        if(![self IsNetworkAvailable])
            return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
        
        json=[self get_json:URL_NEW_ORDER parameters:params];
    }
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    int result = [[jsobj valueForKey:@"result"] intValue];
    
    if (result==2)
    {
        
        appDelegate.cart_count = [[jsobj valueForKey:@"cart_count"] intValue];
        //appDelegate.wish_count =[[jsobj valueForKey:@"wish_count"] intValue];
        //    appDelegate.port_count =[[jsobj valueForKey:@"portfolio_count"] intValue];
        
        [appDelegate update_count_mark];
    }
    
    [appDelegate SetSo:[jsobj valueForKey:@"soId"]];
    return jsobj;
}
+(NSDictionary*) add_toPortfolio:(NSString* ) item_id
{
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
    [params setValue:item_id forKey:@"product_id"];
    
    NSData* json = nil;
    if(appDelegate.offline_mode)
    {
        json = [OLDataProvider offline_add2Portfolio:params];
    } else {
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
        json=[self get_json:URL_ADD_TO_PORTFOLIO parameters:params];
    }
    
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    int result = [[jsobj valueForKey:@"result"] intValue];
    
    if (result==2)
    {
        
        //        appDelegate.cart_count = [[jsobj valueForKey:@"cart_count"] intValue];
        //    appDelegate.wish_count =[[jsobj valueForKey:@"wish_count"] intValue];
        appDelegate.port_count =[[jsobj valueForKey:@"portfolio_count"] intValue];
        
        [appDelegate update_count_mark];
    }
    return jsobj;
}
+(NSDictionary*) add_toWatchList:(NSString* ) item_id
{
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
    [params setValue:item_id forKey:@"product_id"];
    if(appDelegate.offline_mode)
    {
        return [OLDataProvider offline_add2wishlist:params];
    }
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    NSData* json=[self get_json:URL_ADD_TO_WATCHLIST parameters:params];
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    int result = [[jsobj valueForKey:@"result"] intValue];
    
    if (result==2)
    {
        
        //appDelegate.cart_count = [[jsobj valueForKey:@"cart_count"] intValue];
        appDelegate.wish_count =[[jsobj valueForKey:@"wish_count"] intValue];
        //    appDelegate.port_count =[[jsobj valueForKey:@"portfolio_count"] intValue];
        
        [appDelegate update_count_mark];
    }
    return jsobj;
}
+(NSDictionary*) cart_setPrice:(NSString*) cart_id price:(float) price discount:(float) discount notes:(NSString*) notes
{
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
    [params setValue:cart_id forKey:@"cartitem_id"];
    [params setValue:notes forKey:@"item_note"];
    
    [params setValue:[NSString stringWithFormat:@"%f",price] forKey:@"price"];
    
    [params setValue:[NSString stringWithFormat:@"%f",discount] forKey:@"discount"];
    NSData* json= nil;
    if(appDelegate.offline_mode)
    {
        json=[OLDataProvider offline_cartsetprice:params];
    }
    else
    {
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
   json=[self get_json:URL_CART_SET_PRICE parameters:params];
    }
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    return jsobj;
}
//+(NSDictionary*) portfolio_setQTY:(NSString*) watchlist_id QTY:(int)qty
//{
//    if(![self IsNetworkAvailable])
//        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
//    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
//    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
//    if(appDelegate.user!=nil)
//        [params setValue:appDelegate.user forKey:@"user"];
//    if(appDelegate.contact_id!=nil)
//        [params setValue:appDelegate.contact_id forKey:@"contactId"];
//    if(appDelegate.password!=nil)
//        [params setValue:appDelegate.password forKey:@"password"];
//
//    [params setValue:watchlist_id forKey:@"item_id"];
//
//    [params setValue:[NSString stringWithFormat:@"%d",qty] forKey:@"available_qty"];
//
//
//
//    NSData* json=[self get_json:URL_DM_SET_QTY parameters:params];
//    if(json==nil)
//        return nil;
//    NSError *error=nil;
//    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
//    return jsobj;
//}
+(NSDictionary*) portfolio_setPrice:(NSString*) watchlist_id price:(float) price discount:(float) discount QTY:(int)qty qty_p:(float) qty_p notes:(NSString*)notes
{
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
    [params setValue:watchlist_id forKey:@"item_id"];
    
//    if(notes.length>0)
//        [params setValue:notes forKey:@"notes"];
    if(notes)
        [params setValue:notes forKey:@"notes"];
    
    if(price != -MAXFLOAT)
        [params setValue:[NSString stringWithFormat:@"%f",price] forKey:@"price"];
    
    if (discount != -MAXFLOAT)
        [params setValue:[NSString stringWithFormat:@"%f",discount] forKey:@"discount"];

    if(qty_p != -MAXFLOAT)
        [params setValue:[NSString stringWithFormat:@"%f",qty_p] forKey:@"available_percent"];
    if(qty != -INT32_MAX)
        [params setValue:[NSString stringWithFormat:@"%d",qty] forKey:@"available_qty"];
    
    NSData* json = nil;
    
    if(appDelegate.offline_mode)
    {
        json = [OLDataProvider offline_editPortfolio:params];
    } else {
        if(![self IsNetworkAvailable])
            return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
        
        json = [self get_json:URL_PORTFOLIO_SET_PRICE parameters:params];
    }
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    return jsobj;
}
+(NSDictionary*) cart_setGeneralNote:(NSString*) order_code notes:(NSString*) notes
{
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
    [params setValue:order_code forKey:@"orderCode"];
    
    if(notes.length==0)
        notes=@"";
    
    
    [params setValue:notes forKey:@"comments"];
    NSData* json=nil;
    if(appDelegate.offline_mode)
    {
        json= [OLDataProvider offline_updategnotes:params];
    }
    else
    {
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
     json=[self get_json:URL_CART_GENERAL_NOTES parameters:params];
    }
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    return jsobj;
}
+(NSDictionary*) cart_setItemNote:(NSString*) cart_id notes:(NSString*) notes
{
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
    [params setValue:cart_id forKey:@"cartitem_id"];
    
    if(notes.length==0)
        notes=@"";
    
    
    [params setValue:notes forKey:@"notes"];
    NSData* json=nil;
    if(appDelegate.offline_mode)
    {
        json= [OLDataProvider offline_cartsetlnotes:params];
    }
    else
    {
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    json=[self get_json:URL_CART_ITEM_NOTES parameters:params];
    }
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    return jsobj;
}
+(NSDictionary*) cart_setFree:(NSString*) cart_id isfree:(bool) isfree
{
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
    [params setValue:cart_id forKey:@"cartitem_id"];
    
    
    
    NSString* free=nil;
    
    if(isfree)
        free=@"true";
    else
        free=@"false";
    
    [params setValue:free forKey:@"free_giveaway"];
    
    if(appDelegate.offline_mode)
    {
        return [OLDataProvider offline_notimpl];
    }
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    NSData* json=[self get_json:URL_CART_SET_PRICE parameters:params];
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    return jsobj;
}
+(NSDictionary*) cart_setQTY:(NSString*) cart_id value:(int) value
{
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
    [params setValue:cart_id forKey:@"cartitem_id"];
    
    
    [params setValue:[NSString stringWithFormat:@"%d",value] forKey:@"inputInt"];
    
    NSData* json=nil;
    if(appDelegate.offline_mode)
    {
        json= [OLDataProvider offline_cartsetqty:params];
    }
    else
    {
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    json=[self get_json:URL_CART_INCRESEMENT parameters:params];
    }
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    return jsobj;
    
}
+(NSDictionary*) cart_incresement:(NSString*) cart_id increse:(bool) increse
{
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
    [params setValue:cart_id forKey:@"cartitem_id"];
    
    if(increse)
        [params setValue:@"1" forKey:@"incrementType"];
    else
        [params setValue:@"0" forKey:@"incrementType"];
    
    
    
    if(appDelegate.offline_mode)
    {
        return [OLDataProvider offline_notimpl];
    }
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    NSData* json=[self get_json:URL_CART_INCRESEMENT parameters:params];
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    return jsobj;
}
+(NSDictionary*) finish_download_Offline:(NSString* )vid
{
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    //    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    
    //    if(appDelegate.user!=nil)
    //        [params setValue:appDelegate.user forKey:@"user"];
    //    //    if(appDelegate.contact_id!=nil)
    //    //        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    //    if(appDelegate.password!=nil)
    //        [params setValue:appDelegate.password forKey:@"password"];
    [params setValue:vid forKey:@"downSerial"];
    NSData* json=[self get_json:URL_FINISH_DOWNLOAD_OFFLINE parameters:params];
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    //    int result = [[jsobj valueForKey:@"result"] intValue];
    //
    //    if (result==2)
    //    {
    //
    ////        appDelegate.cart_count = [[jsobj valueForKey:@"cart_count"] intValue];
    ////        //appDelegate.wish_count =[[jsobj valueForKey:@"count"] intValue];
    ////        //    appDelegate.port_count =[[jsobj valueForKey:@"portfolio_count"] intValue];
    ////
    ////        [appDelegate update_count_mark];
    //    }
    return jsobj;
}
+(NSDictionary*) download_Offline:(NSString* )vid
{
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    //    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    
    //    if(appDelegate.user!=nil)
    //        [params setValue:appDelegate.user forKey:@"user"];
    //    //    if(appDelegate.contact_id!=nil)
    //    //        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    //    if(appDelegate.password!=nil)
    //        [params setValue:appDelegate.password forKey:@"password"];
    [params setValue:vid forKey:@"downSerial"];
    NSData* json=[self get_json:URL_DOWNLOAD_OFFLINE parameters:params];
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    //    int result = [[jsobj valueForKey:@"result"] intValue];
    //
    //    if (result==2)
    //    {
    //
    ////        appDelegate.cart_count = [[jsobj valueForKey:@"cart_count"] intValue];
    ////        //appDelegate.wish_count =[[jsobj valueForKey:@"count"] intValue];
    ////        //    appDelegate.port_count =[[jsobj valueForKey:@"portfolio_count"] intValue];
    ////
    ////        [appDelegate update_count_mark];
    //    }
    return jsobj;
}
+(NSDictionary*) check_Offline:(NSString* )ver  useInternalAddress:(bool)buseinternaladdress vid:(NSString*)vid
{
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    //    if(appDelegate.contact_id!=nil)
    //        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    [params setValue:ver forKey:@"ver"];
    [params setValue:vid forKey:@"vid"];
    if(buseinternaladdress)
        [params setValue:@"true" forKey:@"internal_address"];
    else
        [params setValue:@"false" forKey:@"internal_address"];
    NSData* json=[self get_json:URL_CHECK_OFFLINE parameters:params];
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    //    int result = [[jsobj valueForKey:@"result"] intValue];
    //
    //    if (result==2)
    //    {
    //
    ////        appDelegate.cart_count = [[jsobj valueForKey:@"cart_count"] intValue];
    ////        //appDelegate.wish_count =[[jsobj valueForKey:@"count"] intValue];
    ////        //    appDelegate.port_count =[[jsobj valueForKey:@"portfolio_count"] intValue];
    ////
    ////        [appDelegate update_count_mark];
    //    }
    return jsobj;
}
+(NSDictionary*)request_Cart:(int)sort
{
    
    DebugLog(@"iSalesNetwork::request_Cart");
    
    
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    //    if(appDelegate.contact_id!=nil)
    //        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
    if(appDelegate.order_code!=nil)
        [params setValue:appDelegate.order_code forKey:@"orderCode"];
    
    [params setValue:[NSNumber numberWithInt:sort] forKey:@"sort"];
    NSData* json=nil;
    if(appDelegate.offline_mode)
    {
        json= [OLDataProvider offline_requestcart:params];
    }
    else
    {
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
        NSError *error=nil;
        
        NSString * uuid= [[NSUUID UUID] UUIDString];
        params[@"resultSerial"]=uuid;
        
        for(int i=0;i<150;i++)
        {
            //           NSMutableDictionary* result_params = [[NSMutableDictionary alloc]init];
            //            result_params[@"resultSerial"]=uuid;
            json=[self get_json:URL_CART parameters:params];
            if(json!=nil)
            {
                
                NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
                if([jsobj[@"result"] intValue]==2)
                {
                    break;
                }
            }
            sleep(2);
        }

    }
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    int result = [[jsobj valueForKey:@"result"] intValue];
    
    if (result==2)
    {
        
        appDelegate.cart_count = [[jsobj valueForKey:@"cart_count"] intValue];
        //appDelegate.wish_count =[[jsobj valueForKey:@"count"] intValue];
        //    appDelegate.port_count =[[jsobj valueForKey:@"portfolio_count"] intValue];
        
        [appDelegate update_count_mark];
    }
    return jsobj;
}
+(NSDictionary*)request_Portfolio:(int)sort
{
    
    
    
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
    [params setValue:[NSString stringWithFormat:@"%d",0 ] forKey:@"offset"];
    [params setValue:[NSString stringWithFormat:@"%d",INT_MAX ] forKey:@"limit"];
    [params setValue:[NSNumber numberWithInt:sort] forKey:@"sort"];
    
    NSData* json = nil;
    if(appDelegate.offline_mode)
    {
        json = [OLDataProvider offline_portfolioList:params];
    } else {
        if(![self IsNetworkAvailable])
            return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
        
        json = [self get_json:URL_PORTFOLIO parameters:params];
    }
    
    
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    int result = [[jsobj valueForKey:@"result"] intValue];
    
    if (result==2)
    {
        
        //        appDelegate.cart_count = [[jsobj valueForKey:@"cart_count"] intValue];
        //appDelegate.wish_count =[[jsobj valueForKey:@"count"] intValue];
        appDelegate.port_count =[[jsobj valueForKey:@"count"] intValue];
        
        [appDelegate update_count_mark];
    }
    return jsobj;
}
+(NSDictionary*)request_WatchList:(int)sort
{
    
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
    [params setValue:[NSString stringWithFormat:@"%d",0 ] forKey:@"offset"];
    [params setValue:[NSString stringWithFormat:@"%d",INT_MAX ] forKey:@"limit"];
    
    [params setValue:[NSNumber numberWithInt:sort] forKey:@"sort"];
    if(appDelegate.offline_mode)
    {
        return [OLDataProvider offline_wishlist:params];
    }
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    NSData* json=[self get_json:URL_WATCHLIST parameters:params];
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    int result = [[jsobj valueForKey:@"result"] intValue];
    
    if (result==2)
    {
        
        //        appDelegate.cart_count = [[jsobj valueForKey:@"cart_count"] intValue];
        appDelegate.wish_count =[[jsobj valueForKey:@"count"] intValue];
        //    appDelegate.port_count =[[jsobj valueForKey:@"portfolio_count"] intValue];
        
        [appDelegate update_count_mark];
    }
    return jsobj;
}
+(NSDictionary*)request_ItemDetail: (NSString* ) item_id model_name:(NSString*) model_name category_id:(NSString*) category_id use_name :(bool) use_name
{
    
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    if(appDelegate.order_code!=nil)
        [params setValue:appDelegate.order_code forKey:@"orderCode"];
    //    [params setValue:[NSString stringWithFormat:@"%d",price_template]  forKey:@"price_template"];
    //    [params setValue:[NSString stringWithFormat:@"%d",customid]  forKey:@"custom_id"];
    if(use_name)
        [params setValue:model_name  forKey:@"product_name"];
    else
        [params setValue:item_id  forKey:@"product_id"];
    
    
    [params setValue:category_id  forKey:@"category"];
    
    
    if(appDelegate.offline_mode)
        return [OLDataProvider offline_model:params];
    
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    NSData* json=[self get_json:URL_ITEM_DETAIL parameters:params];
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    return jsobj;
}
//+(NSDictionary*)category_LoadMore: (NSString*) category customid:(int) customid price_template:(int) price_template sort:(int) sort_by filter:(NSString*) filter keyword:(NSString*) keyword offset:(int)offset
//{
//    if(![self IsNetworkAvailable])
//        return nil;
//    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
//    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
//    if(appDelegate.user!=nil)
//        [params setValue:appDelegate.user forKey:@"user"];
//    if(appDelegate.contact_id!=nil)
//        [params setValue:appDelegate.contact_id forKey:@"contactId"];
//    if(appDelegate.password!=nil)
//        [params setValue:appDelegate.password forKey:@"password"];
//    [params setValue:[NSString stringWithFormat:@"%d",price_template]  forKey:@"price_template"];
//    [params setValue:[NSString stringWithFormat:@"%d",customid]  forKey:@"custom_id"];
//    [params setValue:[NSString stringWithFormat:@"%@",category]  forKey:@"category"];
//    [params setValue:[NSString stringWithFormat:@"%d",sort_by]  forKey:@"sort_by"];
//    [params setValue:[NSString stringWithFormat:@"%d",offset]  forKey:@"offset"];
//    [params setValue:filter forKey:@"filter"];
//    [params setValue:keyword forKey:@"keyword"];
//
//
//    NSData* json=[self get_json:URL_CATEGORY_LOADMORE parameters:params];
//    if(json==nil)
//        return nil;
//    NSError *error=nil;
//    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
//    return jsobj;
//
//}
+(NSDictionary*)Category_addall: (NSString*) category customid:(int) customid price_template:(int) price_template sort:(int) sort_by filter:(NSString*) filter keyword:(NSString*) keyword  offset:(long) offset limit:(long) limit alert:(NSString*)alert qty:(NSString*)qty available:(NSString*)available price:(NSString*)price bestseller:(NSString*)bestseller modelname:(NSString*) modelname modeldescrip:(NSString*)modeldescrip orderCode:(NSString*) orderCode addTo:(NSString*) addTo

{
    
    
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    
    
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    if(appDelegate.order_code!=nil)
        [params setValue:appDelegate.order_code forKey:@"orderCode"];
    
    [params setValue:addTo forKey:@"addTo"];
    [params setValue:orderCode forKey:@"orderCode"];
    [params setValue:alert forKey:@"alert"];
    [params setValue:qty forKey:@"sold_by_qty"];
    [params setValue:available forKey:@"available"];
    [params setValue:price forKey:@"price"];
    [params setValue:bestseller forKey:@"bestseller"];
    [params setValue:modelname forKey:@"modelName"];
    [params setValue:modeldescrip forKey:@"modelDescription"];
    
    [params setValue:[NSString stringWithFormat:@"%d",price_template]  forKey:@"price_template"];
    [params setValue:[NSString stringWithFormat:@"%d",customid]  forKey:@"custom_id"];
    [params setValue:category  forKey:@"category"];
    [params setValue:[NSString stringWithFormat:@"%d",sort_by]  forKey:@"sort_by"];
    [params setValue:[NSString stringWithFormat:@"%d",sort_by]  forKey:@"sort_by"];
    [params setValue:[NSString stringWithFormat:@"%ld",limit]  forKey:@"limit"];
    [params setValue:[NSString stringWithFormat:@"%ld",offset]  forKey:@"offset"];
    [params setValue:filter forKey:@"filter"];
    [params setValue:keyword forKey:@"keyword"];
    
    NSData* json= nil;
    
    if(appDelegate.offline_mode)
    {
        json= [OLDataProvider offline_categoryaddall:params];
    }
    else
    {
        if(![self IsNetworkAvailable])
            return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
        

        NSError *error=nil;

        NSString * uuid= [[NSUUID UUID] UUIDString];
        params[@"resultSerial"]=uuid;
        
        for(int i=0;i<150;i++)
        {
 //           NSMutableDictionary* result_params = [[NSMutableDictionary alloc]init];
//            result_params[@"resultSerial"]=uuid;
            json=[self get_json:URL_CATEGORYADDALL parameters:params];
            if(json!=nil)
            {
                
                NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
                if([jsobj[@"result"] intValue]==2)
                {
                    break;
                }
            }
            sleep(2);
        }

       
        
    }
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    return jsobj;
    
}
//+(NSDictionary*)category_addall2portfolio: (NSString*) category customid:(int) customid price_template:(int) price_template sort:(int) sort_by filter:(NSString*) filter keyword:(NSString*) keyword  offset:(long) offset limit:(long) limit alert:(NSString*)alert qty:(NSString*)qty available:(NSString*)available price:(NSString*)price bestseller:(NSString*)bestseller modelname:(NSString*) modelname modeldescrip:(NSString*)modeldescrip
//{
//    
//    
//    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
//    
//    
//    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
//    
//    if(appDelegate.user!=nil)
//        [params setValue:appDelegate.user forKey:@"user"];
//    if(appDelegate.contact_id!=nil)
//        [params setValue:appDelegate.contact_id forKey:@"contactId"];
//    if(appDelegate.password!=nil)
//        [params setValue:appDelegate.password forKey:@"password"];
//    if(appDelegate.order_code!=nil)
//        [params setValue:appDelegate.order_code forKey:@"orderCode"];
//    
//    [params setValue:alert forKey:@"alert"];
//    [params setValue:qty forKey:@"sold_by_qty"];
//    [params setValue:available forKey:@"available"];
//    [params setValue:price forKey:@"price"];
//    [params setValue:bestseller forKey:@"bestseller"];
//    [params setValue:modelname forKey:@"modelName"];
//    [params setValue:modeldescrip forKey:@"modelDescription"];
//    
//    [params setValue:[NSString stringWithFormat:@"%d",price_template]  forKey:@"price_template"];
//    [params setValue:[NSString stringWithFormat:@"%d",customid]  forKey:@"custom_id"];
//    [params setValue:category  forKey:@"category"];
//    [params setValue:[NSString stringWithFormat:@"%d",sort_by]  forKey:@"sort_by"];
//    [params setValue:[NSString stringWithFormat:@"%d",sort_by]  forKey:@"sort_by"];
//    [params setValue:[NSString stringWithFormat:@"%ld",limit]  forKey:@"limit"];
//    [params setValue:[NSString stringWithFormat:@"%ld",offset]  forKey:@"offset"];
//    [params setValue:filter forKey:@"filter"];
//    [params setValue:keyword forKey:@"keyword"];
//    
//    
//    
//    if(appDelegate.offline_mode)
//        return [OLDataProvider offline_category:params];
//    if(![self IsNetworkAvailable])
//        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
//    
//    NSData* json=[self get_json:URL_ADDALL2PORTFOLIO parameters:params];
//    if(json==nil)
//        return nil;
//    NSError *error=nil;
//    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
//    return jsobj;
//    
//}
//+(NSDictionary*)category_addall2wish: (NSString*) category customid:(int) customid price_template:(int) price_template sort:(int) sort_by filter:(NSString*) filter keyword:(NSString*) keyword  offset:(long) offset limit:(long) limit alert:(NSString*)alert qty:(NSString*)qty available:(NSString*)available price:(NSString*)price bestseller:(NSString*)bestseller modelname:(NSString*) modelname modeldescrip:(NSString*)modeldescrip
//{
//    
//    
//    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
//    
//    
//    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
//    
//    if(appDelegate.user!=nil)
//        [params setValue:appDelegate.user forKey:@"user"];
//    if(appDelegate.contact_id!=nil)
//        [params setValue:appDelegate.contact_id forKey:@"contactId"];
//    if(appDelegate.password!=nil)
//        [params setValue:appDelegate.password forKey:@"password"];
//    if(appDelegate.order_code!=nil)
//        [params setValue:appDelegate.order_code forKey:@"orderCode"];
//    
//    [params setValue:alert forKey:@"alert"];
//    [params setValue:qty forKey:@"sold_by_qty"];
//    [params setValue:available forKey:@"available"];
//    [params setValue:price forKey:@"price"];
//    [params setValue:bestseller forKey:@"bestseller"];
//    [params setValue:modelname forKey:@"modelName"];
//    [params setValue:modeldescrip forKey:@"modelDescription"];
//    
//    [params setValue:[NSString stringWithFormat:@"%d",price_template]  forKey:@"price_template"];
//    [params setValue:[NSString stringWithFormat:@"%d",customid]  forKey:@"custom_id"];
//    [params setValue:category  forKey:@"category"];
//    [params setValue:[NSString stringWithFormat:@"%d",sort_by]  forKey:@"sort_by"];
//    [params setValue:[NSString stringWithFormat:@"%d",sort_by]  forKey:@"sort_by"];
//    [params setValue:[NSString stringWithFormat:@"%ld",limit]  forKey:@"limit"];
//    [params setValue:[NSString stringWithFormat:@"%ld",offset]  forKey:@"offset"];
//    [params setValue:filter forKey:@"filter"];
//    [params setValue:keyword forKey:@"keyword"];
//    
//    
//    
//    if(appDelegate.offline_mode)
//        return [OLDataProvider offline_category:params];
//    if(![self IsNetworkAvailable])
//        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
//    
//    NSData* json=[self get_json:URL_ADDALL2WISH parameters:params];
//    if(json==nil)
//        return nil;
//    NSError *error=nil;
//    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
//    return jsobj;
//    
//}
+(NSDictionary*)Category: (NSString*) category customid:(int) customid price_template:(int) price_template sort:(int) sort_by filter:(NSString*) filter keyword:(NSString*) keyword  offset:(long) offset limit:(long) limit alert:(NSString*)alert qty:(NSString*)qty available:(NSString*)available price:(NSString*)price bestseller:(NSString*)bestseller modelname:(NSString*) modelname modeldescrip:(NSString*)modeldescrip
{
    
    
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    
    
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    if(appDelegate.order_code!=nil)
        [params setValue:appDelegate.order_code forKey:@"orderCode"];
    
    [params setValue:alert forKey:@"alert"];
    [params setValue:qty forKey:@"sold_by_qty"];
    [params setValue:available forKey:@"available"];
    [params setValue:price forKey:@"price"];
    [params setValue:bestseller forKey:@"bestseller"];
    [params setValue:modelname forKey:@"modelName"];
    [params setValue:modeldescrip forKey:@"modelDescription"];
    
    [params setValue:[NSString stringWithFormat:@"%d",price_template]  forKey:@"price_template"];
    [params setValue:[NSString stringWithFormat:@"%d",customid]  forKey:@"custom_id"];
    [params setValue:category  forKey:@"category"];
    [params setValue:[NSString stringWithFormat:@"%d",sort_by]  forKey:@"sort_by"];
    [params setValue:[NSString stringWithFormat:@"%d",sort_by]  forKey:@"sort_by"];
    [params setValue:[NSString stringWithFormat:@"%ld",limit]  forKey:@"limit"];
    [params setValue:[NSString stringWithFormat:@"%ld",offset]  forKey:@"offset"];
    [params setValue:filter forKey:@"filter"];
    [params setValue:keyword forKey:@"keyword"];
    
    
    
    if(appDelegate.offline_mode)
        return [OLDataProvider offline_category:params];
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    NSData* json=[self get_json:URL_CATEGORY parameters:params];
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    return jsobj;
    
}
+(NSDictionary*)Search_addall:(long ) offset limit :(long)limit keywords :(NSString*) keywords matchfull:(bool)matchfull orderCode:(NSString*) orderCode  addTo:(NSString*) addTo
{
    
    
    
    
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    if(appDelegate.order_code!=nil)
        [params setValue:appDelegate.order_code forKey:@"orderCode"];
    //    [params setValue:[NSString stringWithFormat:@"%d",price_template]  forKey:@"price_template"];
    //    [params setValue:[NSString stringWithFormat:@"%d",customid]  forKey:@"custom_id"];
    //    [params setValue:[NSString stringWithFormat:@"%@",category]  forKey:@"category"];
    //    [params setValue:[NSString stringWithFormat:@"%d",sort_by]  forKey:@"sort_by"];
    //    [params setValue:filter forKey:@"filter"];
    [params setValue:keywords forKey:@"keyword"];
    [params setValue:addTo forKey:@"addTo"];
    
    [params setValue:orderCode forKey:@"orderCode"];
    [params setValue:[NSString stringWithFormat:@"%ld",limit]  forKey:@"limit"];
    [params setValue:[NSString stringWithFormat:@"%ld",offset]  forKey:@"offset"];
    if(matchfull)
        [params setValue:@"true"  forKey:@"exactMatch"];
    else
        [params setValue:@"false"  forKey:@"exactMatch"];
    
    NSData* json=nil;
    if(appDelegate.offline_mode)
    {
        json=[OLDataProvider offline_searchaddall:params];
    }
    else
    {
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
        NSError *error=nil;
        
        NSString * uuid= [[NSUUID UUID] UUIDString];
        params[@"resultSerial"]=uuid;
        
        for(int i=0;i<150;i++)
        {
            //           NSMutableDictionary* result_params = [[NSMutableDictionary alloc]init];
            //            result_params[@"resultSerial"]=uuid;
            json=[self get_json:URL_SEARCHADDALL parameters:params];
            if(json!=nil)
            {
                
                NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
                if([jsobj[@"result"] intValue]==2)
                {
                    break;
                }
            }
            sleep(2);
        }
    }
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    return jsobj;
}
+(NSDictionary*)Search:(long ) offset limit :(long)limit keywords :(NSString*) keywords matchfull:(bool)matchfull
{
    
    
    
    
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    if(appDelegate.order_code!=nil)
        [params setValue:appDelegate.order_code forKey:@"orderCode"];
    //    [params setValue:[NSString stringWithFormat:@"%d",price_template]  forKey:@"price_template"];
    //    [params setValue:[NSString stringWithFormat:@"%d",customid]  forKey:@"custom_id"];
    //    [params setValue:[NSString stringWithFormat:@"%@",category]  forKey:@"category"];
    //    [params setValue:[NSString stringWithFormat:@"%d",sort_by]  forKey:@"sort_by"];
    //    [params setValue:filter forKey:@"filter"];
    [params setValue:keywords forKey:@"keyword"];
    
    [params setValue:[NSString stringWithFormat:@"%ld",limit]  forKey:@"limit"];
    [params setValue:[NSString stringWithFormat:@"%ld",offset]  forKey:@"offset"];
    if(matchfull)
        [params setValue:@"true"  forKey:@"exactMatch"];
    else
        [params setValue:@"false"  forKey:@"exactMatch"];
    if(appDelegate.offline_mode)
    {
        return [OLDataProvider offline_search:params];
    }
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    NSData* json=[self get_json:URL_SEARCH parameters:params];
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    return jsobj;
}
+(NSDictionary*)ItemSearch_addall:(long ) offset limit :(long)limit covertype:(NSString* ) covertype ctgid:(NSString*)ctgid modelname:(NSString*) modelname modeldescrip:(NSString*)modeldescrip alert:(NSString*)alert qty:(NSString*)qty available:(NSString*)available price:(NSString*)price bestseller:(NSString*)bestseller orderCode:(NSString*) orderCode addTo:(NSString*) addTo
{
    
    // for debug
    //    return [RAUtils error_json:RESULT_NET_ERROR err_msg:nil];
    //return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    if(appDelegate.order_code!=nil)
        [params setValue:appDelegate.order_code forKey:@"orderCode"];
    
        [params setValue:addTo forKey:@"addTo"];
    
    [params setValue:orderCode forKey:@"orderCode"];
    
    //    [params setValue:[NSString stringWithFormat:@"%d",price_template]  forKey:@"price_template"];
    //    [params setValue:[NSString stringWithFormat:@"%d",customid]  forKey:@"custom_id"];
    //    [params setValue:[NSString stringWithFormat:@"%@",category]  forKey:@"category"];
    //    [params setValue:[NSString stringWithFormat:@"%d",sort_by]  forKey:@"sort_by"];
    //    [params setValue:filter forKey:@"filter"];
    [params setValue:covertype forKey:@"covertype"];
    [params setValue:ctgid forKey:@"ctgId"];
    [params setValue:modelname forKey:@"modelName"];
    [params setValue:modeldescrip forKey:@"modelDescription"];
    [params setValue:alert forKey:@"alert"];
    [params setValue:qty forKey:@"sold_by_qty"];
    [params setValue:available forKey:@"available"];
    [params setValue:price forKey:@"price"];
    [params setValue:bestseller forKey:@"bestseller"];
    
    [params setValue:[NSString stringWithFormat:@"%ld",limit]  forKey:@"limit"];
    [params setValue:[NSString stringWithFormat:@"%ld",offset]  forKey:@"offset"];
    NSData* json = nil;
    
    if(appDelegate.offline_mode)
    {
        json= [OLDataProvider offline_itemsearchaddall:params];
    }
    else
    {
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
        NSError *error=nil;
        
        NSString * uuid= [[NSUUID UUID] UUIDString];
        params[@"resultSerial"]=uuid;
        
        for(int i=0;i<150;i++)
        {
            //           NSMutableDictionary* result_params = [[NSMutableDictionary alloc]init];
            //            result_params[@"resultSerial"]=uuid;
            json=[self get_json:URL_ITEMSEARCHADDALL parameters:params];
            if(json!=nil)
            {
                
                NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
                if([jsobj[@"result"] intValue]==2)
                {
                    break;
                }
            }
            sleep(2);
        }
    }
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    return jsobj;
}
+(NSDictionary*)ItemSearch:(long ) offset limit :(long)limit covertype:(NSString* ) covertype ctgid:(NSString*)ctgid modelname:(NSString*) modelname modeldescrip:(NSString*)modeldescrip alert:(NSString*)alert qty:(NSString*)qty available:(NSString*)available price:(NSString*)price bestseller:(NSString*)bestseller
{
    
    // for debug
    //    return [RAUtils error_json:RESULT_NET_ERROR err_msg:nil];
    //return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    if(appDelegate.order_code!=nil)
        [params setValue:appDelegate.order_code forKey:@"orderCode"];
    
    
    
    
    
    //    [params setValue:[NSString stringWithFormat:@"%d",price_template]  forKey:@"price_template"];
    //    [params setValue:[NSString stringWithFormat:@"%d",customid]  forKey:@"custom_id"];
    //    [params setValue:[NSString stringWithFormat:@"%@",category]  forKey:@"category"];
    //    [params setValue:[NSString stringWithFormat:@"%d",sort_by]  forKey:@"sort_by"];
    //    [params setValue:filter forKey:@"filter"];
    [params setValue:covertype forKey:@"covertype"];
    [params setValue:ctgid forKey:@"ctgId"];
    [params setValue:modelname forKey:@"modelName"];
    [params setValue:modeldescrip forKey:@"modelDescription"];
    [params setValue:alert forKey:@"alert"];
    [params setValue:qty forKey:@"sold_by_qty"];
    [params setValue:available forKey:@"available"];
    [params setValue:price forKey:@"price"];
    [params setValue:bestseller forKey:@"bestseller"];
    
    [params setValue:[NSString stringWithFormat:@"%ld",limit]  forKey:@"limit"];
    [params setValue:[NSString stringWithFormat:@"%ld",offset]  forKey:@"offset"];
    
    if(appDelegate.offline_mode)
    {
        return [OLDataProvider offline_itemsearch:params];
    }
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    NSData* json=[self get_json:URL_ITEM_SEARCH parameters:params];
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    return jsobj;
}

//+(NSDictionary*)Search: (NSString*) category customid:(int) customid price_template:(int) price_template sort:(int) sort_by filter:(NSString*) filter keyword:(NSString*) keyword
//{
//    if(![self IsNetworkAvailable])
//    return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
//    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
//    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
//    if(appDelegate.user!=nil)
//    [params setValue:appDelegate.user forKey:@"user"];
//    if(appDelegate.contact_id!=nil)
//        [params setValue:appDelegate.contact_id forKey:@"contactId"];
//    if(appDelegate.password!=nil)
//    [params setValue:appDelegate.password forKey:@"password"];
//    [params setValue:[NSString stringWithFormat:@"%d",price_template]  forKey:@"price_template"];
//    [params setValue:[NSString stringWithFormat:@"%d",customid]  forKey:@"custom_id"];
//    [params setValue:[NSString stringWithFormat:@"%@",category]  forKey:@"category"];
//    [params setValue:[NSString stringWithFormat:@"%d",sort_by]  forKey:@"sort_by"];
//    [params setValue:filter forKey:@"filter"];
//    [params setValue:keyword forKey:@"keyword"];
//
//
//    NSData* json=[self get_json:URL_SEARCH parameters:params];
//    if(json==nil)
//        return nil;
//    NSError *error=nil;
//    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
//    return jsobj;
//}


+(NSDictionary*)request_model_qty: (NSString*) fashionId
{
    
    
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    [params setValue:fashionId  forKey:@"fashionId"];
    NSData* json = nil;
    if(appDelegate.offline_mode)
    {
        json = [OLDataProvider offline_model_qty:params];
    } else {
        if(![self IsNetworkAvailable])
            return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
        json=[self get_json:URL_REQUEST_MODEL_QTY parameters:params];
    }
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    return jsobj;
}

+(NSDictionary*)retrieve_password: (NSString*) user email:(NSString*) email
{
    
    
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    //    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    //    if(appDelegate.user!=nil)
    //        [params setValue:appDelegate.user forKey:@"user"];
    //    if(appDelegate.contact_id!=nil)
    //        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    //    if(appDelegate.password!=nil)
    //        [params setValue:appDelegate.password forKey:@"password"];
    [params setValue:user  forKey:@"username"];
    [params setValue:email  forKey:@"email"];
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    NSData* json=[self get_json:URL_RETRIEVE_PASS parameters:params];
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    return jsobj;
}
+(NSDictionary*)load_HomePage:(int) price_template customid:(int) customid
{
    
    
    
    
    
    
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    if(appDelegate.contact_id!=nil)
        [params setValue:appDelegate.contact_id forKey:@"contactId"];
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    [params setValue:[NSString stringWithFormat:@"%d",price_template]  forKey:@"price_template"];
    [params setValue:[NSString stringWithFormat:@"%d",customid]  forKey:@"custom_id"];
    
    
    //    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.offline_mode)
    {
        //params[@"offline_Command"]=url;
        return [OLDataProvider offline_home];
    }
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    NSData* json=[self get_json:URL_LOAD_HOME parameters:params];
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    return jsobj;
}

+(NSDictionary*)logout
{
    
    
    
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    
    
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
    
    if(appDelegate.offline_mode)
    {
        return [OLDataProvider offline_logout:params];
    }
    if(![self IsNetworkAvailable])
    {
        DebugLog(@"NET ERR");
        
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
        //        return nil;
    }
    NSData* json=[self get_json:URL_LOGOUT parameters:params];
    //if(json==nil)
    
    
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    int result = [[jsobj valueForKey:@"result"] intValue];
    
    if (result==2)
    {
        
        appDelegate.cart_count = 0;//[[jsobj valueForKey:@"cart_count"] intValue];
        appDelegate.wish_count =0;//[[jsobj valueForKey:@"wish_count"] intValue];
        appDelegate.port_count =0;//[[jsobj valueForKey:@"portfolio_count"] intValue];
        
        [appDelegate update_count_mark];
        
        
        appDelegate.can_show_price =false;
        appDelegate.can_see_price =false;
        appDelegate.can_create_portfolio =false;
        appDelegate.can_create_order =false;
        
        
        appDelegate.can_cancel_order =false;
        appDelegate.can_set_cart_price =false;
        appDelegate.can_delete_order =false;
        appDelegate.can_submit_order =false;
        appDelegate.can_set_tearsheet_price =false;
        appDelegate.can_update_contact_info = false;
        
        appDelegate.save_order_logout = false;
        appDelegate.submit_order_logout = false;
        appDelegate.alert_sold_in_quantities = false;
        
        appDelegate.ipad_perm =nil ;
        appDelegate.user_type = USER_ROLE_UNKNOWN;
        appDelegate.OrderFilter= nil;
        [appDelegate SetSo:nil];
        [appDelegate set_main_button_panel];
    }
    return jsobj;
}
+(NSDictionary*)request_Cagegory
{
    // DebugLog(@"@@@@@@@@@@@@@@@@@@@LOADING CATEGORY MENU");
    
    
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.offline_mode)
    {
        //params[@"offline_Command"]=url;
        return [OLDataProvider offline_category_menu];
    }
    
    if(![self IsNetworkAvailable])
    {
        DebugLog(@"NET ERR");
        
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
        //        return nil;
    }
    
    NSData* json=[self get_json:URL_REQUEST_CATMENU parameters:nil];
    //if(json==nil)
    
    
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    return jsobj;
}
+(int)Authorize : (NSString*) user password:(NSString*) password{
    
    //    if(![ApexMobileNetwork IsHostAvailable:URL_UPDATE_AUTH])
    //        return RESULT_NET_ERROR;
    NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
    long ver =[defaults integerForKey:[NSString stringWithFormat:@"%@_Auth_InfoVer",user]];
    
    
    
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.duid !=nil)
        [params setValue:appDelegate.duid forKey:@"udid"];
    [params setValue:@"handset_login" forKey:@"action"];
    //    [headers setValue:[NSString stringWithFormat:@"%d",dataLength] forKey:@"Content-Length"];
    
    [params setValue:user forKey:@"user"];
    [params setValue:password forKey:@"password"];
    [params setValue:[NSString stringWithFormat:@"%ld",ver]  forKey:@"auth_ver"];
#ifdef TEST
    [params setValue:@"true" forKey:@"is_debug"];
#else
    [params setValue:@"false" forKey:@"is_debug"];
#endif
    
    NSData* json= nil;
    if(appDelegate.offline_mode)
    {
        json= [OLDataProvider offline_login:params] ;
        
    }
    else
    {
        if(![self IsNetworkAvailable])
            return RESULT_NET_NOTAVAILABLE;
        json =[self get_json:URL_UPDATE_AUTH parameters:params];
        
    }
    
    if(json==nil)
        return RESULT_NET_ERROR;
    
    
    int ret = [self parse_authinfo:json user:user password:password];
    DebugLog(@"parse_authinfo return %d ",ret);
    
    
    return ret;
    
    
}
+(NSDictionary*)update_customer_img: (NSString*) contactid img_url:(NSString*) url
{
    
    
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    //    if(appDelegate.contact_id!=nil)
    
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    [params setValue:contactid forKey:@"contactId"];
    [params setValue:url forKey:@"business_card"];
    //   [params setValue:[NSNumber numberWithInt:index ] forKey:@"index"];
    
    if(appDelegate.offline_mode)
    {
        return [OLDataProvider offline_notimpl];
    }
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    NSData* json=[self get_json:URL_UPDATE_CUSTOMER_BCARD parameters:params];
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    return jsobj;
}
+(NSDictionary*)request_PendingOrder:(NSString *)contactid
{
    
    
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    //    if(appDelegate.contact_id!=nil)
    
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    [params setValue:contactid forKey:@"contactId"];
    if(appDelegate.offline_mode)
    {
        return [OLDataProvider offline_notimpl];
    }
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    NSData* json=[self get_json:URL_CUSTOMER_PENDINGORDER parameters:params];
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    return jsobj;
    
}
+(NSDictionary*)request_CustomerInfo:(NSString* ) contactid
{
    
    
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    //    if(appDelegate.contact_id!=nil)
    
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    [params setValue:contactid forKey:@"contactId"];
    
    if(appDelegate.offline_mode)
        return [OLDataProvider offline_contactinfo:params];
    if(![self IsNetworkAvailable])
        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
    
    NSData* json=[self get_json:URL_CUSTOMER_INFO parameters:params];
    if(json==nil)
        return nil;
    NSError *error=nil;
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    return jsobj;
    
}
+(int)parse_authinfo : (NSData *) json user:(NSString*) user password:(NSString*) password
{
    DebugLog(@"parse_authinfo");
    NSError *error=nil;
    
    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
    if(jsobj)
    {
        
        UIApplication * app = [UIApplication sharedApplication];
        AppDelegate *appDelegate = (AppDelegate *)[app delegate];
        int result = [[jsobj valueForKey:@"result"] intValue];
        
        if (result<0)
            return result;
        if(result!=AP_USER_AUTH&& result!=9)
        {
            
            
            DebugLog(@"USER NOT AUTHORIZED CODE=%d ",result);
            [appDelegate Logout];
            if(result==8)
            {
                return RESULT_LOGIN_DEVICE;
            }
            return RESULT_FALSE;
            
        }
        NSDictionary* objheader = [jsobj objectForKey:@"header"];
        
        NSString* required_ver=[jsobj objectForKey:@"min_ver"] ;
        user=[objheader objectForKey:@"username"] ;
        DebugLog(@"required_ver=%@ ",required_ver);
        //        NSDictionary* infoDict =[[NSBundle mainBundle] infoDictionary];
        //        NSString* versionNum =[infoDict valueForKey:@"CFBundleVersion"];
        //        versionNum = [NSString stringWithFormat:@"A%@",versionNum];
        int ibadge = [[objheader valueForKey:@"badge"] intValue];
        
        //        if([ibadge isEqual:[NSNull null]])
        //            strbadge=@"0";
        //        if(ibadge==nil)
        //            ibadge=@"0";
        //        if([strbadge isEqualToString:@"null"])
        //            strbadge=@"0";
        app.applicationIconBadgeNumber = ibadge;//[strbadge intValue];
        
        //  BOOL bigger = [appDelegate.build compare:required_ver] ;
        if([appDelegate.build intValue]<[required_ver intValue])
            return RESULT_VER_LOW;
        //        appDelegate.sessionid = [objheader valueForKey:@"sessionid"];
        appDelegate.user = user;
        appDelegate.password = password;
        appDelegate.user_type = [[objheader valueForKey:@"user_type"] intValue];
        appDelegate.user_icon =[objheader valueForKey:@"user_img"] ;
        appDelegate.bLogin = true;
        
        
        
        
        if(appDelegate.user_type==USER_ROLE_CUSTOMER)
        {
            appDelegate.customerInfo = [[objheader objectForKeyedSubscript:@"customerInfo"] mutableCopy];
            appDelegate.contact_id = [objheader valueForKey:@"contact_id"];
//            appDelegate.order_code =[objheader valueForKey:@"orderCode"];
//            appDelegate.order_status =[[objheader valueForKey:@"orderStatus"] intValue];
//            [appDelegate SetSo:[objheader valueForKey:@"soId"]];
        }
        NSString* mode =[jsobj valueForKey:@"mode"] ;
        [appDelegate SetMode:mode];
        
        
        appDelegate.cart_count = [[objheader valueForKey:@"cart_count"] intValue];
        appDelegate.wish_count =[[objheader valueForKey:@"wish_count"] intValue];
        appDelegate.port_count =[[objheader valueForKey:@"portfolio_count"] intValue];
        
        [appDelegate update_count_mark];
        
        
        
        appDelegate.can_show_price =[[objheader valueForKey:@"can_show_price"] boolValue];
        appDelegate.can_see_price =[[objheader valueForKey:@"can_see_price"] boolValue];
        appDelegate.can_create_portfolio =[[objheader valueForKey:@"can_create_portfolio"] boolValue];
        appDelegate.can_create_order =[[objheader valueForKey:@"can_create_order"] boolValue];
        
        appDelegate.can_cancel_order =[[objheader valueForKey:@"can_cancel_order"] boolValue];
        appDelegate.can_set_cart_price =[[objheader valueForKey:@"can_set_cart_price"] boolValue];
        appDelegate.can_delete_order =[[objheader valueForKey:@"can_delete_order"] boolValue];
        appDelegate.can_update_contact_info =[[objheader valueForKey:@"can_update_contact_info"] boolValue];
        appDelegate.can_submit_order =[[objheader valueForKey:@"can_submit_order"] boolValue];
        appDelegate.can_set_tearsheet_price =[[objheader valueForKey:@"can_set_tearsheet_price"] boolValue];
        
        appDelegate.save_order_logout =[[objheader valueForKey:@"save_order_logout"] boolValue];
        appDelegate.submit_order_logout =[[objheader valueForKey:@"submit_order_logout"] boolValue];
        
        appDelegate.alert_sold_in_quantities = [[objheader valueForKey:@"alert_sold_in_quantities"] boolValue];
        
        
        
        appDelegate.ipad_perm =[objheader valueForKey:@"ipad_perm"] ;
        
        NSString* strfilter = [objheader valueForKey:@"statusFilter"] ;
        
        
        
        appDelegate.OrderFilter= [[RAUtils string2dict:strfilter] mutableCopy];
        
        
        [appDelegate set_main_button_panel];
        
        if(appDelegate.user_type==USER_ROLE_CUSTOMER) {
        
            // shop order status filter
            NSString *shopOrderStatusFilterStr = [objheader valueForKey:@"shopOrderFilter"] ;
            [Singleton sharedInstance].shop_order_status_filter = [[RAUtils string2dict:shopOrderStatusFilterStr] mutableCopy];
            
            // specialInstruction
            [Singleton sharedInstance].specialInstruction = [objheader valueForKey:@"specialInstruction"];
            
            //-价格类型
            [Singleton sharedInstance].npd_shop_price_type = [[objheader valueForKey:@"price_type"] integerValue];
            
            // 权限
            [Singleton sharedInstance].permissions_price_setting = [[objheader valueForKey:@"can_set_price_formula"] boolValue];
            [Singleton sharedInstance].permissions_edit_order = [[objheader valueForKey:@"can_place_order"] boolValue];

            [Singleton sharedInstance].permissions_submit_order = [[objheader valueForKey:@"can_submit_order"] boolValue];

            [Singleton sharedInstance].permissions_merge_order = [[objheader valueForKey:@"can_merge_order"] boolValue];
            
            [Singleton sharedInstance].deliveryString = [objheader valueForKey:@"delivery_price"];
            [[Singleton sharedInstance] resetGlobalLock];
            [Singleton sharedInstance].customer_can_see_sales_Order = [[objheader valueForKey:@"can_see_salesorder"] boolValue];
        }
        
        //        DebugLog(@"sessionid=%@ ",appDelegate.sessionid);
        //        if ([[objheader valueForKey:@"update"] boolValue]==false)
        //        {
        //            // no update on the server;
        //            return RESULT_TRUE;
        //        }
        //        int Auth_InfoVer = [[objheader valueForKey:@"ver"] intValue];
        //        NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
        //        [defaults removeObjectForKey:[NSString stringWithFormat:@"%@_Auth_InfoVer",user]];
        //       [defaults setInteger:Auth_InfoVer forKey:[NSString stringWithFormat:@"%@_Auth_InfoVer",user]];
        //        [defaults synchronize];
        //
        //        NSDictionary* objfuncs = [jsobj objectForKey:@"functions"];
        //        NSArray* keys= [objfuncs allKeys];
        
        
        /*
         
         db.setTransactionSuccessful();
         db.endTransaction();
         */
        return RESULT_TRUE;
        
    }
    //    NSDictionary *weatherInfo = [jsobj objectForKey:@"weatherinfo"];
    //    txtView.text = [NSString stringWithFormat:@"今天是 %@  %@  %@  的天气状况是：%@  %@ ",[weatherInfo objectForKey:@"date_y"],[weatherInfo objectForKey:@"week"],[weatherInfo objectForKey:@"city"], [weatherInfo objectForKey:@"weather1"], [weatherInfo objectForKey:@"temp1"]];
    //      DebugLog(@"weatherInfo字典里面的内容为--》%@", weatherDic );
    
    
    
    return RESULT_USERAUTH_ERROR;
}

+(bool) IsNetworkAvailable
{
    
    if (([Reachability reachabilityForInternetConnection].currentReachabilityStatus == NotReachable) &&
        ([Reachability reachabilityForLocalWiFi].currentReachabilityStatus == NotReachable))
        return false;
    return true;
}
//+(NSString *)flattenHTML:(NSString *)html trimWhiteSpace:(BOOL)trim
//{
//    NSScanner *theScanner = [NSScanner scannerWithString:html];
//    NSString *text = nil;
//
//    while ([theScanner isAtEnd] == NO) {
//        // find start of tag
//        [theScanner scanUpToString:@"<" intoString:NULL] ;
//        // find end of tag
//        [theScanner scanUpToString:@">" intoString:&text] ;
//        // replace the found tag with a space
//        //(you can filter multi-spaces out later if you wish)
//        html = [html stringByReplacingOccurrencesOfString:
//                [ NSString stringWithFormat:@"%@>", text]
//                                               withString:@""];
//    }
//
//    return trim ? [html stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] : html;
//}
//
//+(NSString *)flattenURL:(NSString *)url trimWhiteSpace:(BOOL)trim
//{
//    NSScanner *theScanner = [NSScanner scannerWithString:url];
//    NSString *text = nil;
//    
//    while ([theScanner isAtEnd] == NO) {
//        // find start of tag
//        [theScanner scanUpToString:@"/" intoString:NULL] ;
//        // find end of tag
//        [theScanner scanUpToString:@"/" intoString:&text] ;
//        // replace the found tag with a space
//        //(you can filter multi-spaces out later if you wish)
//        url = [url stringByReplacingOccurrencesOfString:
//                [ NSString stringWithFormat:@"%@", text]
//                                               withString:@""];
//    }
//    
//    return trim ? [url stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] : url;
//}

+ (NSDictionary *)set_npd_shop_price_type:(NSInteger)priceType {
    
    NSMutableDictionary* dic = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [dic setValue:appDelegate.user forKey:@"user"];
    
    if(appDelegate.password!=nil)
        [dic setValue:appDelegate.password forKey:@"password"];
    
    [dic setValue:[NSString stringWithFormat:@"%d",priceType] forKey:@"price_type"];
    
    NSData* json=nil;
    if(appDelegate.offline_mode)
    {
        return [OLDataProvider offline_notimpl];
    }
    else
    {
        if(![self IsNetworkAvailable])
            return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
        
        json = [iSalesNetwork get_json:URL_SET_PRICE_TYPE parameters:dic];
    }
    if(json!=nil)
    {
        NSError *error=nil;
        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
        
        
        return jsobj;
    }

    
    return nil;
}

+ (NSDictionary *)get_npd_shop_givenPrice {
    NSMutableDictionary* dic = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [dic setValue:appDelegate.user forKey:@"user"];
    
    if(appDelegate.password!=nil)
        [dic setValue:appDelegate.password forKey:@"password"];
        
    NSData* json=nil;
    if(appDelegate.offline_mode)
    {
        return [OLDataProvider offline_notimpl];
    }
    else
    {
        if(![self IsNetworkAvailable])
            return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
        
        json = [iSalesNetwork get_json:URL_GET_CIVEN_PRICE parameters:dic];
    }
    if(json!=nil)
    {
        NSError *error=nil;
        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
        
        
        return jsobj;
    }
    
    
    return nil;

}

+ (NSDictionary *)set_npd_shop_givenPrice:(NSMutableDictionary *)params {
    
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];
    
    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
    NSData* json=nil;
    if(appDelegate.offline_mode)
    {
        return [OLDataProvider offline_notimpl];
    }
    else
    {
        if(![self IsNetworkAvailable])
            return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
        
        json = [iSalesNetwork get_json:URL_SET_GIVEN_PRICE parameters:params];
    }
    if(json!=nil)
    {
        NSError *error=nil;
        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
        
        
        return jsobj;
    }
    
    
    return nil;
}

+ (NSDictionary *)merge_order:(NSMutableDictionary *)params {
    
    NSMutableDictionary* dic = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [dic setValue:appDelegate.user forKey:@"user"];

    if(appDelegate.password!=nil)
        [dic setValue:appDelegate.password forKey:@"password"];
    
    [dic setValue:[params objectForKey:@"order_ids"] forKey:@"order_ids"];
    [dic setValue:[params objectForKey:@"targetOrderId"] forKey:@"targetOrderId"];
    
    NSData* json=nil;
    if(appDelegate.offline_mode)
    {
        return [OLDataProvider offline_notimpl];
    }
    else
    {
        if(![self IsNetworkAvailable])
            return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
        
        json=[self get_json:URL_SET_MERGE_ORDER parameters:dic];
    }
    if(json!=nil)
    {
        NSError *error=nil;
        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
        
        
        return jsobj;
    }
    else
        return nil;

}

+ (NSDictionary *)lock_order:(NSString *)oderCode {
    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [params setValue:appDelegate.user forKey:@"user"];

    if(appDelegate.password!=nil)
        [params setValue:appDelegate.password forKey:@"password"];
    
    [params setValue:oderCode forKey:@"orderCode"];

    NSData* json=nil;
    if(appDelegate.offline_mode)
    {
        json=[OLDataProvider offline_editorder:params];
        
    }
    else
    {
        if(![self IsNetworkAvailable])
            return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
        
        json=[self get_json:URL_OPEN_ORDER parameters:params];
    }
    if(json!=nil)
    {
        NSError *error=nil;
        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
        
        return jsobj;
    }
    else
        return nil;
}

+ (NSDictionary *)quoteOrder:(NSString *)so_id emailAddr:(NSString *)addr {
    
    NSMutableDictionary* dic = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [dic setValue:appDelegate.user forKey:@"user"];
    
    if(appDelegate.password!=nil)
        [dic setValue:appDelegate.password forKey:@"password"];
    
    [dic setValue:[NSNumber numberWithInteger:[so_id integerValue]] forKey:@"orderCode"];
    [dic setValue:addr forKey:@"email"];
    
    NSData* json=nil;
    if(appDelegate.offline_mode)
    {
        return [OLDataProvider offline_notimpl];
    }
    else
    {
        if(![self IsNetworkAvailable])
            return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
        
        json = [iSalesNetwork get_json:URL_EMAIL_CART parameters:dic];
    }
    if(json!=nil)
    {
        NSError *error=nil;
        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
        
        
        return jsobj;
    }
    
    return @{@"result" : @(RESULT_FALSE)};
}

+ (NSDictionary *)notifyModel:(NSString *)modelID emailAddr:(NSString *)addr{
    
    NSMutableDictionary* dic = [[NSMutableDictionary alloc] init];
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    if(appDelegate.user!=nil)
        [dic setValue:appDelegate.user forKey:@"user"];
    
    if(appDelegate.password!=nil)
        [dic setValue:appDelegate.password forKey:@"password"];
    
    [dic setValue:modelID forKey:@"productId"];
    if (addr) {
        [dic setValue:addr forKey:@"email"];
    }
    
    NSData* json=nil;
    if(appDelegate.offline_mode)
    {
        return [OLDataProvider offline_notimpl];
    }
    else
    {
        if(![self IsNetworkAvailable])
            return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
        
        json = [iSalesNetwork get_json:URL_NOTIFY_ME parameters:dic];
    }
    if(json!=nil)
    {
        NSError *error=nil;
        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
        
        
        return jsobj;
    }
    
    return @{@"result" : @(RESULT_FALSE)};
}

@end
