class CyclePreparationCloningService {

  public void cloneCompanyIntoCycleForPreparation(
      OkrCompany okrCompanyToClone, Cycle cycleToCloneInto) {
    OkrCompany okrCompanyCopy = okrCompanyToClone.getCopyWithoutRelations();
    cycleToCloneInto.getCompanies().add(okrCompanyCopy);
    okrCompanyCopy.setCycle(cycleToCloneInto);
    companyRepository.save(okrCompanyCopy);
    cloneObjectiveListIntoOkrUnitForPreparation(okrCompanyToClone.getObjectives(), okrCompanyCopy);
    cloneChildUnitListIntoParentUnitForPreparation(
        okrCompanyToClone.getOkrChildUnits(), okrCompanyCopy);
    cloneUserSettingsFromClonedCompanyIntoOkrBranchForPreparation(
        okrCompanyToClone, okrCompanyCopy);
  }

}