Konkretno treba da napravim "IS" koji ce da se stara oko primanja zahteva za proveru dostupnosti hotela.
Korisnik salje zahtev. U njemu pise za koje je hotele zainteresovan, koji period, koliko ljudi itd. Agencija onda salje pitanje svakom hotelu dali imaju slobodnih mesta tada (bilo bi lepo kada bi i hoteli bili u sistemu i oni to sami proveravali, ali posto hotela ima samo nekoliko stotina, mozda i vise ..).
Kada agencija dobije povratnu informaciju, ona salje ponudu korisniku, sa onim hotelima u kojima u datom periodu ima mesta i sa cenom. Ako je zainteresovan za neki od tih sastavlja se ugovor. A inace po Spanskom zakonu korisnik mora da potpise ugovor (papirni) i da ga posalje faksom (ili slicno, skenira ...) nazad, bezveze ali ...
Ja sam mislio sledece :
Objekti - Klase :
- Korisnik
- Hotel
- Zainterosovan (za sta su zainteresovani korisnici)
- Booking (za sta je potpisan ugovor)
I plan je da se svaka klasa brine oko citanja forme prilikom unosa nohiv ili menjanja starih podataka u bazi. Pretrage za svaki od njih ... i oupste o svemu.
Problem je oko te organizacije. Recimo evo sta sam dobio tim putem :
package Hotel;
sub new{
my $data = {};
return bless $data;
}
sub create_table {
# Just send the DataBase Handle to this method and it will create
# hotels table for you.
my $something = shift;
my $dbh = shift;
my $tmp = <<SQL;
my $tmp = <<SQL;
CREATE TABLE hotels(
id VARCHAR(15) NOT NULL PRIMARY KEY,
name VARCHAR(25) NOT NULL,
hp_german VARCHAR(75),
hp_english VARCHAR(75),
hp_spanish VARCHAR(75),
address VARCHAR(50),
zip VARCHAR(20),
city VARCHAR(50),
country VARCHAR(50),
telephone VARCHAR(50),
fax VARCHAR(50),
email VARCHAR(75),
person VARCHAR(25),
language_en TINYINT,
language_ge TINYINT,
language_sp TINYINT,
winter_address VARCHAR(50),
winter_zip VARCHAR(20),
winter_city VARCHAR(50),
winter_country VARCHAR(50),
winter_telephone VARCHAR(50),
winter_fax VARCHAR(50),
winter_email VARCHAR(75),
winter_person VARCHAR(25),
winter_language_en TINYINT,
winter_language_ge TINYINT,
winter_language_sp TINYINT,
invoice_address VARCHAR(50),
invoice_zip VARCHAR(20),
invoice_city VARCHAR(50),
invoice_country VARCHAR(50),
invoice_telephone VARCHAR(50),
invoice_fax VARCHAR(50),
invoice_email VARCHAR(75),
invoice_person VARCHAR(25),
invoice_language_en TINYINT,
invoice_language_ge TINYINT,
invoice_language_sp TINYINT,
opened_from DATE,
opened_until DATE,
company VARCHAR(50),
company_web VARCHAR(50),
location VARCHAR(15),
category VARCHAR(25),
stars TINYINT,
route_english TEXT,
route_german TEXT,
route_spanish TEXT,
percentage INT,
tax VARCHAR(50),
image1 VARCHAR(50),
image2 VARCHAR(50))
SQL
$dbh->do($tmp) || return $dbh->errstr;
DB_disconnect($dbh);
return 1;
}
sub delete_table {
my $something = shift;
my $dbh = shift;
$dbh->do("DROP TABLE hotels") || return $dbh->errstr;
DB_disconnect($dbh);
return 1;
}
sub get_hotel_data {
my $something = shift;
my $dbh = shift;
my $id = shift;
my $sth = $dbh->prepare("SELECT id,name,hp_german,hp_english,hp_spanish,
address,zip,city,country,telephone,fax,email,person,language_en,language_ge,
language_sp,winter_address,winter_zip,winter_city,winter_country,
winter_telephone,winter_fax,winter_email,winter_person,winter_language_en,
winter_language_ge,winter_language_sp,invoice_address,invoice_zip,
invoice_city,invoice_country,invoice_telephone,invoice_fax,invoice_email,
invoice_person,invoice_language_en,invoice_language_ge,invoice_language_sp,
opened_from,opened_until,company,company_web,location,category,stars,
route_english,route_german,route_spanish,percentage,tax,image1,
image2
FROM hotels WHERE id=?") || return $dbh->errstr();
my $responce = $sth->execute($id);
my @rows = $sth->fetchrow_array();
my $error_msg = $sth->errstr();
if(@rows > 0){
return @rows;
} else{
return 0,$error_msg;
}
}
sub DB_add_hotel{
# i think it would be better idea to get the
my $something = shift;
my $dbh = shift;
my ($id,$name,$hp_german,$hp_english,$hp_spanish,$address,$zip,$city,
$country,$telephone,$fax,$email,$person,$language_en,$language_ge,
$language_sp,$winter_address,$winter_zip,$winter_city,$winter_country,
$winter_telephone,$winter_fax,$winter_email,$winter_person,
$winter_language_en,$winter_language_ge,$winter_language_sp,$invoice_address,
$invoice_zip,$invoice_city,$invoice_country,$invoice_telephone,$invoice_fax,
$invoice_email,$invoice_person,$invoice_language_en,$invoice_language_ge,
$invoice_language_sp,$opened_from,$opened_until,$company,$company_web,
$location,$category,$stars,$route_english,$route_german,$route_spanish,
$percentage,$tax,$image1,$image2) = @_;
# at some point it would be wise to change this to ?,?,?
# and execute($....,$...) form !
my $tmp = <<SQL;
INSERT INTO hotels (id,name,hp_german,hp_english,hp_spanish,address,zip,
city,country,telephone,fax,email,person,language_en,language_ge,language_sp,
winter_address,winter_zip,winter_city,winter_country,winter_telephone,
winter_fax,winter_email,winter_person,winter_language_en,winter_language_ge,
winter_language_sp,invoice_address,invoice_zip,invoice_city,invoice_country,
invoice_telephone,invoice_fax,invoice_email,invoice_person,invoice_language_en,
invoice_language_ge,invoice_language_sp,opened_from,opened_until,company,
company_web,location,category,stars,route_english,route_german,route_spanish,
percentage,tax,image1,image2)
VALUES('$id','$name','$hp_german','$hp_english','$hp_spanish','$address',
'$zip','$city','$country','$telephone','$fax','$email','$person',
'$language_en','$language_ge','$language_sp','$winter_address','$winter_zip',
'$winter_city','$winter_country','$winter_telephone','$winter_fax',
'$winter_email','$winter_person','$winter_language_en','$winter_language_ge',
'$winter_language_sp','$invoice_address','$invoice_zip','$invoice_city',
'$invoice_country','$invoice_telephone','$invoice_fax','$invoice_email',
'$invoice_person','$invoice_language_en','$invoice_language_ge',
'$invoice_language_sp','$opened_from','$opened_until','$company',
'$company_web','$location','$category','$stars','$route_english',
'$route_german','$route_spanish','$percentage','$tax','$image1','$image2')
SQL
$responce = $dbh->do($tmp);
my $error = $dbh->errstr();
if($responce != 0){
return 1;
} else {
return 0,$error;
}
}
1;
Slozicete se da to bas i nije najbolje resenje, jer ako treba da promenim nesto u korisniku ...
Ako neko zna za neki tutorijal, knjigu ili nesto sl. Koja govori o velikim projektima u perlu, neka kaze .... Takodje svaki vas primer koda, ili komentar na ovaj moj je dobrodosao ...
ps. Da znam da treba da koristim placeholder - ? u prepare pa da pozivam sa execute i posaljem promenljive a ne ovako ....