def get_graph_data(self, company_name, company_guid):
        """Fetch and process graph data for a specific company.

        Args:
            company_name (str): The name of the company.
            company_guid (str): The GUID of the company.

        Raises:
            BitSightException: If an error occurs during the process.
        """
        try:
            data_to_post = []
            post_data = []
            last_rating = None
            current_rating = None
            rating_diff = None
            last_date = None
            checkpoint_key = "{}".format(company_guid)
            checkpoint_data = self.checkpoint_obj.get_last_data(self.graph_state, table_name=GRAPH_DATA_TABLE)
            last_data = self.checkpoint_obj.get_endpoint_last_data(
                checkpoint_data, "graph_data", company_guid
            )
            if last_data:
                last_date = datetime.strptime(last_data[0], self.date_format)
                last_rating = last_data[1]
            url = self.base_url + self.graph_data_path.format(company_guid)
            response = self.get_bitsight_data(url)
            if not response:
                return
            if response.get("ratings"):
                rating_data = response["ratings"]
                sorted_ratings = sorted(rating_data, key=lambda i: i["x"])
                count = 0
                # get rating of every date from response
                for rating in sorted_ratings:
                    rating["Rating_Date"] = rating.pop("x")
                    rating["Rating"] = rating.pop("y")
                    rating["Company_name"] = company_name
                    rating["Rating_differance"] = None
                    date_in_object = datetime.strptime(
                        rating["Rating_Date"], self.date_format
                    )
                    if last_data:
                        if date_in_object.date() > last_date.date():
                            current_rating = rating["Rating"]
                            rating_diff = int(current_rating) - int(last_rating)
                            rating["Rating_differance"] = rating_diff
                            last_rating = current_rating
                            post_data.append(rating)
                            data_to_post = [rating["Rating_Date"], rating["Rating"]]
                        else:
                            data_to_post = [str(last_date.date()), rating["Rating"]]
                    else:
                        if count == 0:
                            last_rating = rating["Rating"]
                            rating["Rating_differance"] = rating_diff
                        else:
                            current_rating = rating["Rating"]
                            rating_diff = int(current_rating) - int(last_rating)
                            rating["Rating_differance"] = rating_diff
                            last_rating = current_rating
                        post_data.append(rating)
                        data_to_post = [rating["Rating_Date"], rating["Rating"]]
                        count += 1
            self.send_data_to_sentinel(
                post_data, GRAPH_DATA_TABLE, company_name, "graph"
            )
            self.checkpoint_obj.save_checkpoint(
                self.graph_state,
                checkpoint_data,
                "graph_data",
                "{}_{}".format(GRAPH_DATA_TABLE, "Checkpoint"),
                checkpoint_key,
                data_to_post,
            )
        except BitSightException:
            raise BitSightException()
        except KeyError as err:
            applogger.error(
                "{} {} KeyError: {}".format(
                    self.logs_starts_with, ALERT_GRAPH_STATISTICS_FUNC_NAME, err
                )
            )
            raise BitSightException()
        except Exception as err:
            applogger.exception(
                "{} {} Error in getting graph data: {}".format(
                    self.logs_starts_with, ALERT_GRAPH_STATISTICS_FUNC_NAME, err
                )
            )
            raise BitSightException()
Fetch and process graph data for a specific company.

        Args:
            company_name (str): The name of the company.
            company_guid (str): The GUID of the company.

        Raises:
            BitSightException: If an error occurs during the process.
        
Solutions/BitSight/Data Connectors/BitSightDataConnector/AlertsGraphStatisticsDetails/bitsight_statistics.py