#include "Empleado.h"
#include<fstream>

using namespace std;

Empleado::Empleado(){
	sueldo = 0;
	strcpy(cargo, "ninguno");
	telefonoOficina = 0;
}

Empleado::~Empleado(){
}

//Constructor parametrico
Empleado::Empleado(const char _nom[],const 
char _apel[], const short &_edad, const char _dir[],
const int _ced, const int _telH, const int 
_telC, const int suel, const int tlfOfi, const char car[]){
	strcpy(nombre, _nom);
	strcpy(apellido, _apel);
	edad=_edad;
	strcpy(direccion, _dir);
	telefonoHogar = _telH;
	telefonoCelular = _telC;
	cedula = _ced;
	sueldo = suel;
	telefonoOficina = tlfOfi;
	strcpy(cargo, car);
	
}

//Metodos de acceso
int Empleado::obtenerSueldo(){
	return sueldo;
}
int Empleado::obtenerTelefonoOficina(){
	return telefonoOficina;
}
char* Empleado::obtenerCargo(){
	return cargo;
}

void Empleado::mostrarEmpleado(){
	this->print();
	cout<<"telefonoOficina: "<<telefonoOficina<<endl;
	cout<<"Cargo: "<<cargo<<endl;
	cout<<"Sueldo: "<<sueldo<<endl;
}

//Metodos de modificacion
void Empleado::asignarSueldo(int s){
	sueldo = s;
}
void Empleado::asignarTelefonoOficina(int t){
	telefonoOficina = t;
}
void Empleado::asignarCargo(const char* c){
	strcpy(cargo, c);
}


//Sobre carga de operadores de escritura y 
//lectura de archivos
ostream &operator<<(ostream &file, const Empleado &p) {
	file << p.nombre << ":" << p.apellido << ":"
	     << p.cedula << ":" << p.edad << ":"
	     << p.direccion << ":" << p.telefonoHogar << ":"
	     << p.telefonoCelular << ":" 
	     << p.telefonoOficina << ":" << p.sueldo << ":"
	     << p.cargo << endl ;
	return (file);
}

istream &operator>>(istream &file, Empleado &p) {
	char linea[300];
	int telefonoHogar, telefonoCelular, cedula, 
	    edad;
	char nombre[20], apellido[20], direccion[100];
	int tlfOfi;
	int suel;
	char carg[20];

	file >> linea;
	sustituirCaracter(linea, ':');
	sscanf(linea, "%s %s %d %d %s %d %d %d %d %s",
		nombre,
		apellido,
		&cedula,
		&edad,
		direccion,
		&telefonoHogar,
		&telefonoCelular,
		&tlfOfi, &suel, carg);
	p.asignarNombre(nombre);
	p.asignarApellido(apellido);
	p.asignarEdad(edad);
	p.asignarCedula(cedula);
	p.asignarDireccion(direccion);
	p.asignarTelefonoHogar(telefonoHogar);
	p.asignarTelefonoCelular(telefonoCelular);
	p.asignarSueldo(suel);
	p.asignarTelefonoOficina(tlfOfi);
	p.asignarCargo(carg);

	return (file);
}

/*
// Funcion de auxiliar

void sustituirCaracter(char *cadena, char caracter){
	int i=0;
	while( cadena[i] != '\0'){
		if(cadena[i] == ':'){
			cadena[i] = ' ';
		}
		i++;
	}
}

*/

