def METHOD_NAME(shapefile_file):
    """Get shapefile data.
    :returns: A geojson data from shapefile
    :rtype: dict
    """
    try:
        # read the shapefile
        reader = shapefile.Reader(shapefile_file)
        fields = reader.fields[1:]
        field_names = [field[0].lower() for field in fields]
        buffer = []
        date_fields = ['date', 'datum']
        for sr in reader.shapeRecords():
            atr = dict(zip(field_names, sr.record))
            geom = sr.shape.__geo_interface__
            feature = dict(
                type="Feature",
                geometry=geom,
                properties=atr)
            buffer.append(feature)
            try:
                for date_field in date_fields:
                    if date_field in feature['properties'] and \
                            feature['properties'][date_field]:
                        feature['properties'][date_field] = \
                            feature['properties'][date_field].strftime(
                                    '%Y-%m-%d')
            except Exception as e:
                raise e
        return {
            "type": "FeatureCollection",
            "features": buffer
        }
    except (shapefile.ShapefileException,
            struct.error, IOError):
        raise BrokenShapefile