class IncidentRegisterPresenter extends RecordRegisterPresenter {

    @Override
    public void saveRecord(ItemValuesMap itemValuesMap, List<String> photoPaths,
                           RecordRegisterView.SaveRecordCallback callback) {
        ItemValuesMap fieldValueVerifyResult = getView().getFieldValueVerifyResult();
        if (fieldValueVerifyResult != null && fieldValueVerifyResult.getValues().size() > 0) {
            callback.onFieldValueInvalid();
            return;
        }

        IncidentTemplateForm incidentForm = incidentFormService.getGBVTemplate();
        boolean validateRequiredFields = incidentService.validateRequiredFields(incidentForm,
                itemValuesMap);

        if (!validateRequiredFields) {
            callback.onRequiredFieldNotFilled();
            return;
        }
        clearProfileItems(itemValuesMap);
        try {
            Incident record = incidentService.saveOrUpdate(itemValuesMap);
            addProfileItems(itemValuesMap, record.getRegistrationDate(), record.getUniqueId(), null,
                    record.getId());
            callback.onSaveSuccessful(record.getId());
        } catch (IOException e) {
            callback.onSavedFail();
        }
    }

    @Inject public  IncidentRegisterPresenter(IncidentService incidentService, IncidentFormService
            incidentFormService);

}