import {
  ApiService
} from "./chunk-2TRRHRR7.js";
import {
  Injectable,
  inject,
  map,
  setClassMetadata,
  ɵɵdefineInjectable
} from "./chunk-WI7WFVZR.js";
import {
  __spreadProps,
  __spreadValues
} from "./chunk-WDMUDEB6.js";

// src/app/services/course.service.ts
var INT_TO_TYPE = { 0: "Url", 1: "Video", 2: "Text", 3: "File" };
function normalizeType(r) {
  return __spreadProps(__spreadValues({}, r), { type: typeof r.type === "number" ? INT_TO_TYPE[r.type] ?? "Url" : r.type });
}
var CourseService = class _CourseService {
  api = inject(ApiService);
  getCourses(search) {
    const params = search ? { search } : void 0;
    return this.api.get("/api/courses", params);
  }
  getCourseById(id) {
    return this.api.get(`/api/courses/${id}`).pipe(map((c) => __spreadProps(__spreadValues({}, c), {
      topics: (c.topics ?? []).map((t) => __spreadProps(__spreadValues({}, t), {
        resources: (t.resources ?? []).map(normalizeType)
      }))
    })));
  }
  createCourse(title, description, creatorId) {
    return this.api.post("/api/courses", { title, description, creatorId });
  }
  updateCourse(id, title, description) {
    return this.api.put(`/api/courses/${id}`, { id, title, description });
  }
  publishCourse(id) {
    return this.api.patch(`/api/courses/${id}/publish`, {});
  }
  deleteCourse(id) {
    return this.api.delete(`/api/courses/${id}`);
  }
  getMyCourses(userId) {
    return this.api.get(`/api/users/${userId}/courses`);
  }
  static \u0275fac = function CourseService_Factory(__ngFactoryType__) {
    return new (__ngFactoryType__ || _CourseService)();
  };
  static \u0275prov = /* @__PURE__ */ \u0275\u0275defineInjectable({ token: _CourseService, factory: _CourseService.\u0275fac, providedIn: "root" });
};
(() => {
  (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(CourseService, [{
    type: Injectable,
    args: [{
      providedIn: "root"
    }]
  }], null, null);
})();

export {
  CourseService
};
//# sourceMappingURL=chunk-6K3TDILH.js.map
