Ejemplo n.º 1
0
Controller::Controller(string ConfFile) {

	auto start = chrono::steady_clock::now();

	try {

		OnStart(ConfFile);
		DispatchWs();

	} catch (int e) {

		XaLibError Error;
		string ErrorDesc=Error.GetError(e);

		SendHtmlHeaders();

		cout<<"<WsData><error><number>"+FromIntToString(e)+"</number><description>"+ErrorDesc+"</description></error></WsData>"<<endl;

	} catch (...) {

		SendHtmlHeaders();
		cout<<"Generic not handled Error"<<endl;

	}

	auto diff = chrono::steady_clock::now() - start;
	string duration=to_string(chrono::duration <double, std::milli> (diff).count());

	LOG.Write("INF", __FILE__, __FUNCTION__,__LINE__,"Action Execution Time In Ms -> "+duration);

	//////VERIFICARE QUESTO CLOSE
	LOG.Close();
};
Ejemplo n.º 2
0
int XaLibModel::CreateExecute(const string& DbTable,vector <string>& FieldName,vector <string>& FieldValue) {

    FieldName.push_back("status");
    FieldName.push_back("updated_by");
    FieldValue.push_back("1");
    FieldValue.push_back(FromIntToString(SESSION.XaUser_ID));


    //CHECK FIELDS
    //vector <string> Fields={"status","old_id"};
    //vector <string> Values={"1","0"};
    /*
    	for (auto i=0;i<LoadedFields.size();i++) {

    		Fields.push_back(LoadedFields[i]["name"]);
    		Values.push_back(LoadedFields[i]["value"]);
    	};
    */
    int NextId=XaLibSql::Insert(DB_WRITE,DbTable,FieldName,FieldValue);

    if (NextId==0) {
        LOG.Write("ERR", __FILE__, __FUNCTION__,__LINE__,"ERROR-301 Inserted a new record into table -> "+DbTable+" with id ->"+to_string(NextId));
        throw 301;
    }

    int UpdatedOrig=XaLibSql::Update(DB_WRITE,DbTable, {"orig_id"}, {FromIntToString(NextId)}, {"id"}, {FromIntToString(NextId)});

    if (UpdatedOrig==0) {
        LOG.Write("ERR", __FILE__, __FUNCTION__,__LINE__,"ERROR-3011 Failed to initialize orig_id for a new record into table -> "+DbTable+" with id ->"+to_string(NextId));
        throw 3011;
    }

    LOG.Write("INF", __FILE__, __FUNCTION__,__LINE__,"Inserted a new record into table -> "+DbTable+" with id ->"+to_string(NextId));

    return NextId;
};
Ejemplo n.º 3
0
int XaLibModel::UpdateExecute(const string& DbTable,vector <string>& FieldName,vector <string>& FieldValue, const int& Id) {

    FieldName.push_back("updated_by");
    FieldValue.push_back(FromIntToString(SESSION.XaUser_ID));

    BackupRecord(DbTable,Id);

    int Updated=XaLibSql::Update(DB_WRITE,DbTable, {FieldName}, {FieldValue}, {"id"}, {XaLibBase::FromIntToString(Id)});

    if (Updated==1) {
        LOG.Write("INF", __FILE__, __FUNCTION__,__LINE__,"Updated a record into table -> "+DbTable+" with id ->"+to_string(Id));
        return Id;
    } else {
        return 0;
    }

};
Ejemplo n.º 4
0
void XaUserLogin::ReadByToken() {

	int XaUser_ID=XaLibToken::ValidateToken(SESSION.Token);

	string SqlQry="SELECT name,surname FROM XaUser WHERE status=1 AND id=\""+FromIntToString(XaUser_ID)+"\"";
	DbResMap DbRes=XaLibSql::FreeQuerySelect(DB_SESSION,SqlQry);

	if (DbRes.size()==1 ){

		vector<string> ReturnedFields={"name","surname"};
		RESPONSE.Content=ReadResponse(DbRes,ReturnedFields);

	} else {

		LOG.Write("ERR", __FILE__, __FUNCTION__,__LINE__,"ERROR-56: User ID Does Not Exist Or Is not Unique");
		throw 56;
	}

};
Ejemplo n.º 5
0
void XaLanguage::Create() {

	vector<string> FieldName;	
	vector<string> FieldValue;

	CreatePrepare({"XaLanguage"},"/XaLanguage/fieldset/field",FieldName,FieldValue);
	
        int NextId=CreateExecute("XaLanguage",FieldName,FieldValue);
        
        if (NextId!=0) {
	
            unique_ptr<XaLibSql> LibSql (new XaLibSql());

            string qry="SELECT XaLabel_ID FROM XaLabelTranslation, XaLabel WHERE XaLanguage_ID NOT IN ("+FromIntToString(NextId)+") AND XaLabel_id=XaLabel.id GROUP BY XaLabel_ID";

            DbResMap DbRes=LibSql->FreeQuerySelect(DB_READ,qry);

            for(unsigned n=0; n<DbRes.size(); ++n){

                    vector<string> VectorFields;
                    VectorFields.push_back("XaLabel_ID");
                    VectorFields.push_back("XaLanguage_ID");

                    vector<string> VectorValues;
                    VectorValues.push_back(DbRes[n]["XaLabel_ID"]);
                    VectorValues.push_back(FromIntToString(NextId));

                    LibSql->Insert(DB_WRITE,"XaLabelTranslation",VectorFields,VectorValues);
                    
                    VectorFields.clear();
                    VectorValues.clear();

            }

            XaLanguageGen();
            
        }
        
        RESPONSE.Content=CreateResponse(NextId);
};
Ejemplo n.º 6
0
void XaUserLogin::ChangePassword() {

	string Password=HTTP.GetHttpParam("password");
	string Password1=HTTP.GetHttpParam("password1");
	string Password2=HTTP.GetHttpParam("password2");

	CheckHttpField({Password,Password1,Password2},"required");

	if (Password1==Password2) {

		string QryUser="******""+FromIntToString(SESSION.XaUser_ID)+"\" AND password=\""+XaLibCrypto::GetSha1(Password)+"\" AND status=1";
		DbResMap DbRes=XaLibSql::FreeQuerySelect(DB_SESSION,QryUser);

		int n=DbRes.size();

		if (n==1) {

			LOG.Write("INF", __FILE__, __FUNCTION__,__LINE__,"Old password is correct");
			XaLibSql::Update(DB_SESSION,"XaUser",{"password"},{XaLibCrypto::GetSha1(Password1)},{"id"},{FromIntToString(SESSION.XaUser_ID)});

			LOG.Write("INF", __FILE__, __FUNCTION__,__LINE__,"Password Changed");

			RESPONSE.Content="OK";

		} else {

			LOG.Write("ERR", __FILE__, __FUNCTION__,__LINE__,"ERROR-58: Old password is not correct");
			throw 58;
		}

	} else {

		LOG.Write("ERR", __FILE__, __FUNCTION__,__LINE__,"ERROR-57: New Password and New Password Confirmation are not identical");
		throw 57;
	}
};
Ejemplo n.º 7
0
void XaLibLog::WriteDb (const string& LogMessageLevel,const char* ClassName,const char* MethodName,const string& LineNumber,const string& LogMessage){

	vector<string> VectorFields ={"app_name","log_level","server_ip_address","ip_address","XaUser_ID","class_name","method_name","line_number","message"}; 
	vector<string> VectorValues ={SETTINGS["AppName"],LogMessageLevel,SESSION.FrontEndIp,SESSION.ClientIp,FromIntToString(SESSION.XaUser_ID),ClassName,MethodName,LineNumber,LogMessage};

	if (SETTINGS["LogLevel"]=="1"){

		XaLibSql::Insert(DB_LOG,"XaSystemLog",VectorFields,VectorValues);

	} else if (SETTINGS["LogLevel"]=="2" && LogMessageLevel=="ERR"){

		XaLibSql::Insert(DB_LOG,"XaSystemLog",VectorFields,VectorValues);
	}
};
Ejemplo n.º 8
0
//LIVELLI DI LOG: 0=NIENTE 1=TUTTO 2=SOLO ERR
void XaLibLog::Write(const string& LogMessageLevel,const char* ClassName,const char* MethodName,const int& LineNumber,const string& LogMessage){

	stringstream LineNumberStringStream;
	LineNumberStringStream << LineNumber;
	string LineNumberString= LineNumberStringStream.str();

	if (SETTINGS["LogLevel"]=="0"){

	} else {

		if (SETTINGS["LogUseDb"]=="yes" && SETTINGS["DatabaseEnable"]=="yes") {

			WriteDb(LogMessageLevel,ClassName,MethodName,LineNumberString,LogMessage);

		} else {

			unique_ptr<XaLibTime> LibTimeLocal(new XaLibTime());
			string LogTime=LibTimeLocal->GetDateTimeIsoComplete();

			string MyLogString="["+SETTINGS["AppName"]+"]["+LogMessageLevel+"]["+SESSION.FrontEndIp+"]["+LogTime+"]["+SESSION.ClientIp+ "]["+FromIntToString(SESSION.XaUser_ID)+"]["+ClassName +"]["+LineNumberString+"]["+MethodName+"]["+LogMessage+"]";

			WriteFile(MyLogString,LogMessageLevel);
		}
	}
};
Ejemplo n.º 9
0
void XaUserLogin::ReadPhoto() {

	DbResMap DbRes=XaLibSql::Select(DB_SESSION,"XaUser",{"photo"},{"id"},{FromIntToString(SESSION.XaUser_ID)});
	
	RESPONSE.Content="<photo>"+DbRes[0]["photo"]+"</photo>";
};
Ejemplo n.º 10
0
void XaUserLogin::AddPhoto() {

	string Photo=HTTP.GetHttpParam("photo");
	XaLibSql::Update(DB_SESSION,"XaUser",{"photo"},{Photo},{"id"},{FromIntToString(SESSION.XaUser_ID)});
	RESPONSE.Content="OK";
};
Ejemplo n.º 11
0
void XaMedia::CreateComplete(){

    string Type=HTTP.GetHttpParam("type");
    string Name=HTTP.GetHttpParam("name");
    string XaDomainMediaCategoryId="";
    
    if (Type.substr(0,5)=="image") {
        XaDomainMediaCategoryId="854";
    } else {
        XaDomainMediaCategoryId="857";
    }
    
    vector<string> FieldName;	
    vector<string> FieldValue;

    vector<string> FieldNameMedia;
    vector<string> FieldValueMedia;
    vector<string> FieldNameData;
    vector<string> FieldValueData;
    
    // standard method CreatePrepare is run only to check field format and requirement
    CreatePrepare({"XaMediaComplete"},"/XaMediaComplete/fieldset/field",FieldName,FieldValue);
    //CreateExecute("XaMedia",FieldName,FieldValue);
    
    FieldNameMedia.push_back("XaTable");
    FieldValueMedia.push_back(HTTP.GetHttpParam("XaTable"));
    FieldNameMedia.push_back("XaField_ID");
    FieldValueMedia.push_back(HTTP.GetHttpParam("XaField_ID"));
    FieldNameMedia.push_back("XaDomainMediaCategory_ID");
    //FieldValueMedia.push_back(HTTP.GetHttpParam("XaDomainMediaCategory_ID"));
    FieldValueMedia.push_back(XaDomainMediaCategoryId);
    FieldNameMedia.push_back("preferred");
    FieldValueMedia.push_back("2");
    FieldNameMedia.push_back("marked");
    FieldValueMedia.push_back("2");
    
    int MediaId=CreateExecute("XaMedia",FieldNameMedia,FieldValueMedia);
    
    //unique_ptr<XaLibChar> LibChar (new XaLibChar());
    
    string XaMediaId=FromIntToString(MediaId);
    //string File=LibChar->B64Decode(HTTP.GetHttpParam("data","B64"));
    
    string File=HTTP.GetHttpParam("data","B64");
    File=AddPlus(File);
    
    string Thumbnail=HTTP.GetHttpParam("thumbnail","B64");
    
    if (Thumbnail=="NoHttpParam") {
        Thumbnail="";
    } else {
        Thumbnail=AddPlus(Thumbnail);
    }
    
    int FileSize=File.size();
    double KFileSize = round(FileSize/1024);
    string KSize = FromDoubleToString(KFileSize);
    
    string FileName = ComposeFileName(XaMediaId);
    
    FieldNameData.push_back("XaMedia_ID");
    FieldValueData.push_back(XaMediaId);
    
    FieldNameData.push_back("file_name");
    FieldValueData.push_back(FileName);
    
    FieldNameData.push_back("data");
    FieldValueData.push_back(File);
    
    FieldNameData.push_back("thumbnail");
    FieldValueData.push_back(Thumbnail);
    
    FieldNameData.push_back("ksize");
    FieldValueData.push_back(KSize);
    
    FieldNameData.push_back("type");
    FieldValueData.push_back(Type);
    
    FieldNameData.push_back("name");
    FieldValueData.push_back(Name);

    int DataId=CreateExecute("XaMediaData",FieldNameData,FieldValueData);
    
    RESPONSE.Content="<create_media><id>"+FromIntToString(MediaId)+"</id></create_media><create_data><id>"+FromIntToString(DataId)+"</id></create_data>";
}
Ejemplo n.º 12
0
int XaLibModel::BackupRecord(const string& DbTable,const int& FieldId) {

    vector<string> Columns=XaLibSql::ColumnsList(DB_READ,DbTable);

    /* all other columns, included "updated", must be preserved */
    vector<string> ExcludeToList= {"id","status"};

    string List= {};

    for(int i=0; i<Columns.size(); i++) {

        auto it = find (ExcludeToList.begin(), ExcludeToList.end(), Columns[i]);

        if (it != ExcludeToList.end()) {

            LOG.Write("INF", __FILE__, __FUNCTION__,__LINE__,"Field Found In The Exclusion List -> "+Columns[i]);

        } else {

            List.append(Columns[i]+",");
            LOG.Write("INF", __FILE__, __FUNCTION__,__LINE__,"Field List Appending -> "+Columns[i]);
        }
    };

    //REMOVE LAST ","
    //string SqlCopiedColumns=List.substr(0, List.size()-1);
    //keep last comma since it is used to append SqlUpdatedColumns,SqlUpdatedValues later on
    string SqlCopiedColumns=List;

    string SqlUpdatedColumns="status";
    string SqlUpdatedValues="'3'";

    string SqlQry="INSERT INTO " + DbTable+" (" +SqlCopiedColumns + SqlUpdatedColumns +") SELECT "+SqlCopiedColumns + SqlUpdatedValues +" FROM "+DbTable+" WHERE id="+FromIntToString(FieldId);

    unsigned NextId=XaLibSql::FreeQueryInsert(DB_WRITE,SqlQry);

    /* NO UPDATES allowed on the record just inserted, since they would alter the "updated" column, which must keep its previous value */

};