#import "wininet.dll"

int InternetOpenA (
   string songAgent,
   int dwAccessType,
   string songProxyName,
   string songProxyBypass,
   int dwFlags
);


int InternetOpenUrlA(
    int     hInternetSession,
    string  sUrl, 
    string  sHeaders,
    int     lHeadersLength,
    int     lFlags,
    int     lContext 
);
 
int InternetConnectA(
   int hInternet,
   string songServerName,
   int nServerPort,
   string songUsername,
   string songPassword,
   int dwService,
   int dwFlags,
   int dwContext
);
 
int HttpOpenRequestA(
   int hConnect,
   string songVerb,
   string songObjectName,
   string songVersion,
   string songReferer,
   string songAcceptTypes,
   int dwFlags,
   int dwContext
);
 


bool HttpSendRequestA(
   int hRequest,
   string songHeaders,
   int dwHeadersLength,
   int lpOptional,
   int dwOptionalLength
);
 
bool InternetReadFile(
   int hFile,
   string lpBuffer,
   int dwNumberOfBytesToRead,
   int& lpdwNumberOfBytesRead[]
);
 


bool InternetCloseHandle(
   int hInternet
);

#define INTERNET_DEFAULT_HTTP_PORT     80
#define INTERNET_SERVICE_HTTP    3
#define INTERNET_FLAG_PRAGMA_NOCACHE    0x00000100 
#define INTERNET_FLAG_NO_CACHE_WRITE    0x04000000 
#define INTERNET_FLAG_RELOAD            0x80000000 

#import

extern string mydomin="www.xxx.de";
extern string file_orderplace="trades.php";
extern string file_orderclose="trades_clos.php";
extern int check_every_x_minute=1;
extern string vendor="Vendor";

string call_place,call_close;
int lastcloseOrderTicket,lastplaceOrderTicket,lastcloseorderpos=-1;
int stopcall;
int oldtime;
      

int init()
{
   if(!IsDllsAllowed()){
      Alert("dll not allow");
      stopcall=1;
      vendor=StringTrimLeft(vendor);
      vendor=StringTrimRight(vendor);
   }
   
   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY)==true){
      lastcloseOrderTicket=OrderTicket();
      lastcloseorderpos=OrdersHistoryTotal()-1;
   }
}

int start()
{
   if(stopcall==1)return;   
   
   if(TimeCurrent()-oldtime>check_every_x_minute*60){
   
      for(int i=0;i<OrdersTotal();i++){
      
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)break;

            string readcomment=OrderComment();
            int c1=StringFind(readcomment,",",0);
            int c2=StringFind(readcomment,",",c1+1);
            int c3=StringFind(readcomment,",",c2+1);
            int c4=StringFind(readcomment,",",c3+1);
            int TSTP=StrToDouble(StringSubstr(readcomment,c2+1,c3-c2-1));
            string get_vnd=StringTrimRight(StringTrimLeft(StringSubstr(readcomment,c3+1,c4-c3-1))); 
            if(c2+1==c3) TSTP=-1;
            if(c3+1==c4) get_vnd="null";
            
            
            string mypair=StringSubstr(OrderSymbol(),0,6);
            string myordertype;
            if(OrderType()==OP_BUY)myordertype="BUY";
            if(OrderType()==OP_BUYLIMIT)myordertype="BUYLIMIT";
            if(OrderType()==OP_BUYSTOP)myordertype="BUYSTOP";
            if(OrderType()==OP_SELL)myordertype="SELL";
            if(OrderType()==OP_SELLLIMIT)myordertype="SELLLIMIT";
            if(OrderType()==OP_SELLSTOP)myordertype="SELLSTOP";
            lastplaceOrderTicket=OrderTicket();
            call_place=
                              "pair="+mypair+
                              "&order="+myordertype+
                              "&price="+OrderOpenPrice()+
                              "&tp="+OrderTakeProfit()+
                              "&sl="+OrderStopLoss()+
                              "&brok="+AccountCompany()+
                              "&mgnr="+OrderTicket()+
                              "&trail="+TSTP+
                              "&vnd="+vendor;
                        
            call_server(file_orderplace,call_place,1);

      }
   
   oldtime=TimeCurrent();
   }
   
   if(OrdersHistoryTotal()-1>lastcloseorderpos){
   
      for(i=lastcloseorderpos;i<=OrdersHistoryTotal()-1;i++){       
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)break;
         readcomment=OrderComment();
         c1=StringFind(readcomment,",",0);
         c2=StringFind(readcomment,",",c1+1);
         c3=StringFind(readcomment,",",c2+1);
         c4=StringFind(readcomment,",",c3+1);
         get_vnd=StringTrimRight(StringTrimLeft(StringSubstr(readcomment,c3+1,c4-c3-1)));
         if(c3+1==c4) get_vnd="null";              
         
   
         string act="closed";
         if(OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP)
            act="cancelled";

         call_close=
                           "brok="+AccountCompany()+
                           "&mgnr="+OrderTicket()+      
                           "&act="+act+
                           "&vnd="+vendor;
                     
         call_server(file_orderclose,call_close,2);     
           
      }
      lastcloseorderpos=OrdersHistoryTotal()-1;
   }
   
   
}   

bool call_server(string phpfile,string myQuery,int myhandle){

   string InternetAgent = "mql4";  
   string strUrl="http://"+mydomin+"/"+phpfile+"?"+myQuery;
   int hInternetOpen = InternetOpenA (InternetAgent,1,"","",0);
   int hInternetOpenUrl = InternetOpenUrlA(hInternetOpen, strUrl, "", 0, INTERNET_FLAG_NO_CACHE_WRITE | INTERNET_FLAG_PRAGMA_NOCACHE | INTERNET_FLAG_RELOAD, 0);
   if(hInternetOpenUrl==0){Print("internet false");lastplaceOrderTicket=0;return(false);}
   
   string mContent = "";
   int lpdwNumberOfBytesRead[1];
   string strWebPage;   
   while (InternetReadFile(hInternetOpenUrl, mContent, 15, lpdwNumberOfBytesRead) != FALSE) {
        if (lpdwNumberOfBytesRead[0] == 0) break;
        strWebPage = StringConcatenate(strWebPage , StringSubstr(mContent, 0, lpdwNumberOfBytesRead[0]));
   } 
   int iResult1 = InternetCloseHandle(hInternetOpenUrl);
   
   
   string strWebPage_transform;
   int c1,c2;
   if(myhandle==1){
      string param_1[]={"Pair:","Order:","Price:","TP:","SL:","Brok:","MagicNumb:","Vendor:","TrailingStop:"};      
      string tempstr_1[]; 
      for(int i=0;i<=8;i++){                 
         c1=StringFind(strWebPage,param_1[i],0);
         c2=StringFind(strWebPage,"<",c1+3);                 
         tempstr_1[i]=StringSubstr(strWebPage,c1,c2-c1);          
         strWebPage_transform=strWebPage_transform+tempstr_1[i]+",";
      }      
   }
   
   if(myhandle==2){
      string param_2[]={"Brok:","MagicNumb:","act:","Vendor:"};      
      string tempstr_2[]; 
      for(i=0;i<=3;i++){                 
         c1=StringFind(strWebPage,param_2[i],0);
         c2=StringFind(strWebPage,"<",c1+3);                 
         tempstr_2[i]=StringSubstr(strWebPage,c1,c2-c1);          
         strWebPage_transform=strWebPage_transform+tempstr_2[i]+",";
      }      
   }
   
   Print(strWebPage_transform);
   return(true);
   
}
   

