def METHOD_NAME(self, mine_guid):
    mine = Mine.find_by_mine_guid(mine_guid)
    if not mine:
        raise NotFound('Mine not found.')
    data = self.parser.parse_args()
    mine_tsf_list = mine.mine_tailings_storage_facilities
    is_mine_first_tsf = len(mine_tsf_list) == 0
    # Check if the mine already has a TSF with the same name
    for mine_tsf in mine_tsf_list:
        if mine_tsf.mine_tailings_storage_facility_name == data.get(
                'mine_tailings_storage_facility_name'):
            raise BadRequest(
                'Mine already has a TSF with the same name: {}'.format(
                    data.get('mine_tailings_storage_facility_name')))
    mine_tsf = MineTailingsStorageFacility.create(
        mine,
        mine_tailings_storage_facility_name=data['mine_tailings_storage_facility_name'],
        latitude=data['latitude'],
        longitude=data['longitude'],
        consequence_classification_status_code=data['consequence_classification_status_code'],
        itrb_exemption_status_code=data['itrb_exemption_status_code'],
        tsf_operating_status_code=data['tsf_operating_status_code'],
        notes=data['notes'],
        storage_location=data.get('storage_location'),
        facility_type=FacilityType.tailings_storage_facility
        if data.get('facility_type') == None else data.get('facility_type'),
        tailings_storage_facility_type=data.get('tailings_storage_facility_type'),
        mines_act_permit_no=data.get('mines_act_permit_no'),
    )
    mine.mine_tailings_storage_facilities.append(mine_tsf)
    if is_mine_first_tsf:
        try:
            tsf_required_reports = MineReportDefinition.find_required_reports_by_category('TSF')
            for tsf_req_doc in tsf_required_reports:
                calculated_due_date = tsf_req_doc.default_due_date or datetime.utcnow()
                MineReport.create(
                    mine_report_definition_id=tsf_req_doc.mine_report_definition_id,
                    mine_guid=mine.mine_guid,
                    due_date=calculated_due_date,
                    received_date=None,
                    submission_year=calculated_due_date.year - 1,
                    permit_id=None)
        except Exception as e:
            db.session.rollback()
            current_app.logger.error(str(e))
            raise InternalServerError(str(e) + ", tsf not created")
    eor_party_guid = data.get('eor_party_guid')
    if eor_party_guid is not None:
        new_eor = MinePartyAppointment.create(
            mine=mine,
            tsf=mine_tsf,
            party_guid=eor_party_guid,
            mine_party_appt_type_code='EOR',
            processed_by=self.get_user_info(),
            start_date=datetime.now(tz=timezone.utc))
        related_guid = mine_tsf.mine_tailings_storage_facility_guid
        new_eor.assign_related_guid('EOR', related_guid)
        new_eor.save()
    mine.save()
    return mine_tsf, 201