package net.alpol.soppix.client.model.zawiadomienia;

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.data.DSRequest;
import com.smartgwt.client.data.DataSource;
import com.smartgwt.client.data.fields.DataSourceBooleanField;
import com.smartgwt.client.data.fields.DataSourceDateTimeField;
import com.smartgwt.client.data.fields.DataSourceFloatField;
import com.smartgwt.client.data.fields.DataSourceIntegerField;
import com.smartgwt.client.data.fields.DataSourceTextField;
import com.smartgwt.client.widgets.grid.ListGridRecord;

import net.alpol.soppix.client.model.util.GwtRpcDataSource;
import net.alpol.soppix.client.model.util.GwtRpcDataSourceEndpoint;
import net.alpol.soppix.client.service.ZawiadomieniaService;
import net.alpol.soppix.client.service.ZawiadomieniaServiceAsync;

public class ZawiadomienieGWTRPCDataSource extends
		GwtRpcDataSource<Zawiadomienie> {


	
	public ZawiadomienieGWTRPCDataSource(){
		
		
		super();
		
		setFetchEndpoint(new GwtRpcDataSourceEndpoint<Zawiadomienie>(){

			@Override
			public void callEndpoint(AsyncCallback callback, DSRequest request,
					Object... parameters) {
				int startRow = request.getStartRow();
				int endRow = request.getEndRow();
				ZawiadomieniaServiceAsync zawiadomieniaService = GWT.create(ZawiadomieniaService.class);
				zawiadomieniaService.listZawiadomienia(startRow, endRow, callback);
				
			}
		
		});
		
		setUpdateEndpoint(new GwtRpcDataSourceEndpoint<Zawiadomienie>(){

			@Override
			public void callEndpoint(AsyncCallback callback, DSRequest request,
					Object... parameters) {


				ZawiadomieniaServiceAsync zawiadomieniaService = GWT.create(ZawiadomieniaService.class);
				ListGridRecord record = (ListGridRecord) parameters[0];
				// TODO: dodaj pobieranie atrybutów
				
			}
			
		});
	      DataSourceIntegerField idDataField = new DataSourceIntegerField("id");
	      idDataField.setPrimaryKey(true);
	      idDataField.setHidden(true);
	      
	      DataSourceDateTimeField data = new DataSourceDateTimeField("data", "Data zawiadomienia");
	      data.setRequired(true);
	      data.setCanEdit(true);
	      
	      DataSourceDateTimeField dataWprowadzenia = new DataSourceDateTimeField("data_wprowadzenia","Data wprowadzenia");
	      dataWprowadzenia.setRequired(true);
	      dataWprowadzenia.setCanEdit(false);
	      
	      DataSourceFloatField kwota = new DataSourceFloatField("kwota","Kwota zawiadomienia");
	      kwota.setRequired(true);
	      kwota.setCanEdit(true);
	      
	      DataSourceFloatField kwotaCalkowita = new DataSourceFloatField("kwota_calkowita","Kwota całkowita");
	      kwotaCalkowita.setRequired(true);
	      kwotaCalkowita.setCanEdit(false);
	      
	      DataSourceFloatField kwotaSplacona = new DataSourceFloatField("kwota_splacono","Kwota spłacona");
	      kwotaSplacona.setRequired(true);
	      kwotaSplacona.setCanEdit(false);
	      
	      DataSourceTextField pojazdNumer = new DataSourceTextField("pojazdNumer","Nr rejestracyjny");
	      pojazdNumer.setRequired(true);
	      pojazdNumer.setCanEdit(true);
	      
	      DataSourceTextField pojazdKraj = new DataSourceTextField("pojazdKraj","Kraj rejestracji");
	      pojazdKraj.setRequired(true);
	      pojazdKraj.setCanEdit(true);
	      
	      DataSourceTextField pojazdMarka = new DataSourceTextField("pojazdMarka","Marka");
	      pojazdMarka.setRequired(true);
	      pojazdKraj.setCanEdit(true);
	      
	      DataSourceTextField pojazdMarkaCepik = new DataSourceTextField("pojazdMarkaCepik", "Marka CEPIK");
	      pojazdMarkaCepik.setRequired(true);
	      pojazdMarkaCepik.setCanEdit(true);
	      
	      
	      DataSourceTextField wlNazwa = new DataSourceTextField("wlNazwa","Nazwa");
	      wlNazwa.setRequired(false);
	      wlNazwa.setCanEdit(true);
	      
	      DataSourceBooleanField wlFirma = new DataSourceBooleanField("wlFirma", "Firma");
	      wlFirma.setRequired(false);
	      wlFirma.setCanEdit(true);
	      
	      DataSourceTextField wlKod = new DataSourceTextField("wlKod", "Kod pocztowy");
	      wlKod.setRequired(false);
	      wlFirma.setCanEdit(true);
	      
	      DataSourceTextField wlMiasto = new DataSourceTextField("wlMiasto", "Miasto");
	      wlMiasto.setRequired(false);
	      wlMiasto.setCanEdit(true);
	      
	      DataSourceTextField wlUlica = new DataSourceTextField("wlUlica", "Ulica");
	      wlUlica.setRequired(false);
	      wlUlica.setCanEdit(true);
	      
	      DataSourceTextField wlNip = new DataSourceTextField("wlNip", "NIP");
	      wlNip.setRequired(false);
	      wlNip.setCanEdit(true);
	      
	      DataSourceTextField wlPesel = new DataSourceTextField("wlPesel","PESEL");
	      wlPesel.setRequired(false);
	      wlPesel.setCanEdit(true);
	      
	      DataSourceDateTimeField wlDataAktualizacji = new DataSourceDateTimeField("wlDataAktualizacji", "Data aktualizacji");
	      wlDataAktualizacji.setRequired(false);
	      wlDataAktualizacji.setCanEdit(true);
	      
	      DataSourceDateTimeField wlDataWeryfikacji = new DataSourceDateTimeField("wlDataWeryfikacji", "Data weryfikacji");
	      wlDataWeryfikacji.setRequired(false);
	      wlDataAktualizacji.setCanEdit(true);
	      
	      
	      
	      
	      
	      
	      setFields(idDataField, data, dataWprowadzenia, kwota, kwotaCalkowita, kwotaSplacona,pojazdNumer, pojazdKraj, pojazdMarka, pojazdMarkaCepik, wlNazwa, wlFirma, wlKod, wlMiasto, wlUlica, wlNip, wlPesel, wlDataAktualizacji, wlDataWeryfikacji);
	      
		
		
	}
	@Override
	protected void populateRecord(ListGridRecord record, Zawiadomienie zawiadomienie) {
		record.setAttribute("id", zawiadomienie.getId());
		record.setAttribute("data", zawiadomienie.getData());
		record.setAttribute("data_wprowadzenia", zawiadomienie.getDataWprowadzenia());
		record.setAttribute("kwota",(Float.parseFloat(String.valueOf(zawiadomienie.getKwota()))/100));
		record.setAttribute("kwota_calkowita",(Float.parseFloat(String.valueOf(zawiadomienie.getKwotaCalkowita()))/100));
		record.setAttribute("kwota_splacono",(Float.parseFloat(String.valueOf(zawiadomienie.getKwotaSplacono()))/100));
		record.setAttribute("pojazdNumer", zawiadomienie.getPojazdNumer());
		record.setAttribute("pojazdKraj", zawiadomienie.getPojazdKraj());
		record.setAttribute("pojazdMarka",zawiadomienie.getPojazdMarka());
		record.setAttribute("pojazdMarkaCepik", zawiadomienie.getPokazdMarkaCepik());
		record.setAttribute("wlNazwa", zawiadomienie.getWlNazwa());
		record.setAttribute("wlFirma", zawiadomienie.isWlFirma());
		record.setAttribute("wlKod", zawiadomienie.getWlKod());
		record.setAttribute("wlMiasto", zawiadomienie.getWlMiasto());
		record.setAttribute("wlUlica", zawiadomienie.getWlUlicaNr());
		record.setAttribute("wlNip", zawiadomienie.getWlNip());
		record.setAttribute("wlPesel", zawiadomienie.getWlPesel());
		record.setAttribute("wlDataAktualizacji", zawiadomienie.getWlDataAktualizacji());
		record.setAttribute("wlDataWeryfikacji", zawiadomienie.getWlDataWeryfikacji());
	}
		
	
	

}
