Continuations for Recurring Job - hangfire

Since BackgroundJob doesn't have Add/Update, I try to work my way around with Recurring job and then set a Background Continuations that will Remove Recurring after it's first time generated. But it's not only remove, but also make my recurring job generate each second after the first generated.
[HttpGet("{day}/{month}/{hour}/{minute}/{second}/{jobID}")]
public string Get(int day, int month, int hour, int minute, int second, string jobID)
{
RecurringJob.AddOrUpdate(jobID, () => Console.WriteLine("At " + hour + " hour " + minute + " minute " +
second + " second, day "
+ day + " month " + month),
"*/" + second + " " + minute + " " + hour + " " + day + " " + month + " *", TimeZoneInfo.Local);
BackgroundJob.ContinueWith(jobID, () => RecurringJob.RemoveIfExists(jobID));
return "value";
}

Apparently Recurring job can't goes with Backgroundjob.ContinueWith. If I want to make it work like a schedule job and still able to update time span inside, I need to set a function to remove it along side.
[HttpGet("{day}/{month}/{hour}/{minute}/{second}/{jobID}")]
public string Get(int day, int month, int hour, int minute, int second, string jobID)
{
RecurringJob.AddOrUpdate(jobID, () => removeRecurring(jobID),
"*/" + second + " " + minute + " " + hour + " " + day + " " + month + " *", TimeZoneInfo.Local);
return "value";
}
public void removeRecurring(string jobId)
{
Console.WriteLine(DateTime.Now);
RecurringJob.RemoveIfExists(jobId);
}

Related

Dynamic dates in where parameter

Am I able to use a dynamic date range for the "where" parameter? I'd like to get all the data changed in the last 30 mins.
All I can find in the documentation is using static dates:
https://developer.xero.com/documentation/api/requests-and-responses
You could try using the query string in the Where Clause.
For Ex.
string querystr = "Date >= " +
"DateTime(" + dateFrom.Year.ToString() + ",
" + dateFrom.Month.ToString() + ", " + dateFrom.Day.ToString() + ") " +
"&& Date <= " +
"DateTime(" + dateTo.Year.ToString() + ", "
+ dateTo.Month.ToString() + ", " + dateTo.Day.ToString() + ")";
Passing this querystring to retrieve user defined date rage Invoices

automatic date and time picking -React Native

In React-native i want to automatically pick system date and time and display in two Textinput place. how can i do this? both time and date must assigned to variables.
you can use JS Date as usual
for example:
var currentdate = new Date();
var datetime = "Current date: " + currentdate.getDate() + "/"
+ (currentdate.getMonth()+1) + "/"
+ currentdate.getFullYear() + " # "
+ currentdate.getHours() + ":"
+ currentdate.getMinutes() + ":"
+ currentdate.getSeconds();

SQL Join Query taking long to complete

I am working on a project that require me to join four tables. I have written this code but it's taking forever to finish. Please help. Ohhh I have about 121 000 entries in the Db
PortfolioCollectionDataContext context = null;
context = DataContext;
var Logins = from bkg in context.EnquiryBookings
where bkg.Paid == true
from log in context.Logins
where log.LoginID == bkg.LoginID
from enq in context.Enquiries
where enq.EnquiryID == bkg.EnquiryID
from estb in context.Establishments
where enq.EstablishmentID == estb.EstablishmentID
select new
{
log.LoginID,
log.FirstName,
log.LastName,
log.CountryOfResidence,
log.EmailAddress,
log.TelephoneNumber,
bkg.TotalPrice,
estb.CompanyName
};
string str = "";
foreach (var user in Logins)
{
str += ("[Name: " + user.LastName + " " + user.FirstName + " - Country: " + user.CountryOfResidence + " - Phone: " + user.TelephoneNumber + " - Email: " + user.EmailAddress + " - Booked From: " + user.CompanyName + " - Spent: " + user.TotalPrice.ToString() + "]");
}
return str;
Use following query on LINQ
PortfolioCollectionDataContext context = null;
context = DataContext;
var Logins = from bkg in context.EnquiryBookings
join log in context.Logins
on log.LoginID equals bkg.LoginID
&& bkg.Paid == true
join enq in context.Enquiries
on enq.EnquiryID equals bkg.EnquiryID
join estb in context.Establishments
on enq.EstablishmentID == estb.EstablishmentID
select new
{
str = "[Name: " + log.LastName + " " + log.FirstName + " - Country: " + log.CountryOfResidence + " - Phone: "
+ log.TelephoneNumber + " - Email: " + log.EmailAddress + " - Booked From: "
+ estb.CompanyName + " - Spent: " + bkg.TotalPrice.ToString() + "]"
};
string output = string.Join(", ", Logins.ToList());
return output;
Check your query by taking cursor on Logins and paste that query here. Then check an estimated execution plan of your query and paste here.
If using SQL Server, to get execution plan of your query using Sql server management studio, click on an icon highlighted in an image below.

'IN' query in fusion table

In the following code, i want to add "IN" +Village+. Where to add this condition in the code. Variable village takes value from a drop down list based on that filter should occur.please help me.Village name is a column in my fusion table.
i.e select 'geometry',villageName from table where querypass > textvalue IN villagename='madurai'
function querymape()
{
/*variable holds the value*/
var village =document.getElementById('village').value.replace(/'/g, "\\'");
var operatore=document.getElementById('operatorstringe').value.replace(/'/g, "\\'");
var textvaluee=document.getElementById("text-valuee").value.replace(/'/g, "\\'");
var querypasse=document.getElementById('query-passe').value.replace(/'/g, "\\'");
{
layer.setQuery("SELECT 'geometry'," + querypasse + " FROM " + tableid + " WHERE " + querypasse + " " + operatore + " '" + textvaluee + "'"+"AND 'VillageName=+village+'");
}
}
/*This is my new code.But its not working.Please help me*/
function querymap()
{
//var villagename='';
var operator=document.getElementById('operatorstring').value.replace(/'/g, "\\'");
var textvalue=document.getElementById("text-value").value.replace(/'/g, "\\'");
var querypass=document.getElementById('query-pass').value.replace(/'/g, "\\'");
var searchStringe = document.getElementById('Search-stringe').value.replace(/'/g, "\\'");
{
layer.setQuery("SELECT 'geometry'," + querypass + " FROM " + tableid + " WHERE " + querypass + " " + operator + " '" + textvalue + "'"+"AND 'VillageName'="+ searchStringe+"");
}
}
Multiple conditions can be combined using the keyword "and"?
You twisted the IN syntax around, it is used when you want to match several values, if you only want to compare to a single value use "=" instead
Applied to your query (with IN syntax):
select 'geometry',villageName from table where querypass > textvalue and villagename IN ('madurai','another village')
With = syntax:
select 'geometry',villageName from table where querypass > textvalue and villagename = 'madurai'

Database with 5 Tables with Insert and Select

my problem is that i have 5 tables and need inserts and selects.
what i did is for every table a class and there i wrote the SQL Statements like this
public class Contact
private static String IDCont = "id_contact";
private static String NameCont = "name_contact";
private static String StreetCont = "street_contact";
private static String Street2Cont = "street2_contact";
private static String Street3Cont = "street3_contact";
private static String ZipCont = "zip_contact";
private static String CityCont = "city_contact";
private static String CountryCont = "country_contact";
private static String Iso2Cont = "iso2_contact";
private static String PhoneCont = "phone_contact";
private static String Phone2Cont = "phone2_contact";
private static String FaxCont = "fax_contact";
private static String MailCont = "mail_contact";
private static String Mail2Cont = "mail2_contact";
private static String InternetCont = "internet_contact";
private static String DrivemapCont = "drivemap_contact";
private static String PictureCont = "picture_contact";
private static String LatitudeCont = "latitude_contact";
private static String LongitudeCont = "longitude_contact";
public static final String TABLE_NAME = "contact";
public static final String SQL_CREATE = "CREATE TABLE IF NOT EXISTS " + TABLE_NAME + "(" +
IDCont + "INTEGER not NULL," +
NameCont + " TEXT not NULL," +
StreetCont + " TEXT," +
Street2Cont + " TEXT," +
Street3Cont + " TEXT," +
ZipCont + " TEXT," +
CityCont + " TEXT," +
CountryCont + " TEXT," +
Iso2Cont + " TEXT," +
PhoneCont + " TEXT," +
Phone2Cont + " TEXT," +
FaxCont + " TEXT," +
MailCont + " TEXT," +
Mail2Cont + " TEXT," +
InternetCont + " TEXT," + //website of the contact
DrivemapCont + " TEXT," + //a link to a drivemap to the contact
PictureCont + " TEXT," + //a photo of the contact building (contact is not a person)
LatitudeCont + " TEXT," +
LongitudeCont + " TEXT," +
"primary key(id_contact)" +
"foreign key(iso2)";
and my insert looks like this
public boolean SQL_INSERT_CONTACT(int IDContIns, String NameContIns, String StreetContIns,
String Street2ContIns, String Street3ContIns, String ZipContIns,
String CityContIns, String CountryContIns, String Iso2ContIns,
String PhoneContIns, String Phone2ContIns, String FaxContIns,
String MailContIns, String Mail2ContIns, String InternetContIns,
String DrivemapContIns, String PictureContIns, String LatitudeContIns,
String LongitudeContIns) {
try{
db.execSQL("INSERT INTO " + "contact" +
"(" + IDCont + ", " + NameCont + ", " + StreetCont + ", " +
Street2Cont + ", " + Street3Cont + ", " + ZipCont + ", " +
CityCont + ", " + CountryCont + ", " + Iso2Cont + ", " +
PhoneCont + ", " + Phone2Cont + ", " + FaxCont + ", " +
MailCont + ", " + Mail2Cont + ", " + InternetCont + ", " +
DrivemapCont + ", " + PictureCont + ", " + LatitudeCont + ", " +
LongitudeCont + ") " +
"VALUES (" + IDContIns + ", " + NameContIns +", " + StreetContIns + ", " +
Street2ContIns + ", " + Street3ContIns + ", " + ZipContIns + ", " +
CityContIns + ", " + CountryContIns + ", " + Iso2ContIns + ", " +
PhoneContIns + ", " + Phone2ContIns + ", " + FaxContIns + ", " +
MailContIns + ", " + Mail2ContIns + ", " + InternetContIns + ", " +
DrivemapContIns + ", " + PictureContIns + ", " + LatitudeContIns + ", " +
LongitudeContIns +")");
return true;
}
catch (SQLException e) {
return false;
}
}
i have a DBAdapter class there i created the database
public class DBAdapter {
public static final String DB_NAME = "mol.db";
private static final int DB_VERSION = 1;
private static final String TAG = "DBAdapter"; //to log
private final Context context;
private SQLiteDatabase db;
public DBAdapter(Context context)
{
this.context = context;
OpenHelper openHelper = new OpenHelper(this.context);
this.db = openHelper.getWritableDatabase();
}
public static class OpenHelper extends SQLiteOpenHelper
{
public OpenHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
#Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(Contact.SQL_CREATE);
db.execSQL(Country.SQL_CREATE);
db.execSQL(Picture.SQL_CREATE);
db.execSQL(Product.SQL_CREATE);
db.execSQL(Project.SQL_CREATE);
}
#Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
Log.w(TAG, "Upgrading database from version "
+ oldVersion + " to " + newVersion
+ ", which will destroy all old data");
db.execSQL(Contact.SQL_DROP);
db.execSQL(Country.SQL_DROP);
db.execSQL(Picture.SQL_DROP);
db.execSQL(Product.SQL_DROP);
db.execSQL(Project.SQL_DROP);
onCreate(db);
}
i found so many different things and tried them but i didn't get anything to work...
i need to know how can i access the database in my activity
and how i can get the insert to work
and is there sth wrong in my code?
thanks for your help
thats how i tried to get it into my activity
public class MainTabActivity extends TabActivity {
private Context context;
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.maintabactivity);
TabHost mTabHost = getTabHost();
Intent intent1 = new Intent().setClass(this,MapOfLight.class);
//Intent intent2 = new Intent().setClass(this,Test.class); //Testactivity
//Intent intent2 = new Intent().setClass(this,DetailView.class); //DetailView
Intent intent2 = new Intent().setClass(this,ObjectList.class); //ObjectList
//Intent intent2 = new Intent().setClass(this,Gallery.class); //Gallery
Intent intent3 = new Intent().setClass(this,ContactDetail.class);
mTabHost.addTab(mTabHost.newTabSpec("tab_mol").setIndicator(this.getText(R.string.mol), getResources().getDrawable(R.drawable.ic_tab_mol)).setContent(intent1));
mTabHost.addTab(mTabHost.newTabSpec("tab_highlights").setIndicator(this.getText(R.string.highlights),getResources().getDrawable(R.drawable.ic_tab_highlights)).setContent(intent2));
mTabHost.addTab(mTabHost.newTabSpec("tab_contacts").setIndicator(this.getText(R.string.contact),getResources().getDrawable(R.drawable.ic_tab_contact)).setContent(intent3));
mTabHost.setCurrentTab(1);
SQLiteDatabase db;
DBAdapter dh = null;
OpenHelper openHelper = new OpenHelper(this.context);
dh = new DBAdapter(this);
db = openHelper.getWritableDatabase();
dh.SQL_INSERT_COUNTRY("AT", "Austria", "AUT");
}
}
i tried it with my country table because it has only 3 columns
public class Country {
private static String Iso2Count = "iso2_country";
private static String NameCount = "name_country";
private static String FlagCount = "flag_image_url_country";
public static final String TABLE_NAME = "country";
public static final String SQL_CREATE = "CREATE TABLE IF NOT EXISTS " + TABLE_NAME + "(" +
Iso2Count + " TEXT not NULL," +
NameCount + " TEXT not NULL," +
FlagCount + " TEXT not NULL," +
"primary key(iso2_country)";
public boolean SQL_INSERT_COUNTRY(String Iso2CountIns, String NameCountIns, String FlagCountIns) {
try{
db.execSQL("INSERT INTO " + "country" +
"(" + Iso2Count + ", " + NameCount + ", " + FlagCount + ") " +
"VALUES ( " + Iso2CountIns + ", " + NameCountIns +", " + FlagCountIns + " )");
return true;
}
catch (SQLException e) {
return false;
}
}
another question is it better to put the insert and select from each table into a separate class, so i have 1 class for each table or put them all into the DBAdapter class?
EDIT: I'm not sure you have shown all your code and therefore I'm not sure my answer is helpful. Where do you declare the variables IDCont, NameCont, StreetCont ... ? I assume they are constants defining the names of your fields. In which case my answer is not correct as that should form a valid INSERT statement.
Can you add the error messages you are seeing as well as being more specific on the DB server you are using?
Your INSERT statement will not work because you are inserting the values of the variables passed to the function, instead of specifying the names of the columns.
The first part of the statment should be all one string:
"INSERT INTO contact (IDCont, NameCont, StreetCont, Street2Cont, Street3Cont, ZipCont," +
"CityCont, CountryCont, Iso2Cont, PhoneCont, Phone2Cont, FaxCont, MailCont, " +
"Mail2Cont, InternetCont, DrivemapCont, PictureCont, LatitudeCont, LongitudeCont) "
"VALUES ("IDContIns + ", " + NameContIns +", " + StreetContIns + ", " +
Street2ContIns + ", " + Street3ContIns + ", " + ZipContIns + ", " +
CityContIns + ", " + CountryContIns + ", " + Iso2ContIns + ", " +
PhoneContIns + ", " + Phone2ContIns + ", " + FaxContIns + ", " +
MailContIns + ", " + Mail2ContIns + ", " + InternetContIns + ", " +
DrivemapContIns + ", " + PictureContIns + ", " + LatitudeContIns + ", " +
LongitudeContIns +")"
I would also question your table design, why are most of the fields TEXT and not a more appropriate data type?