from win32com.client import CDispatch

from IFikomObject import IFikomObject
from IParametreler import IParametreler
from IPartOperasyonlari.IPartOperasyonu import IPartOperasyonu


class IProcessDokuman: pass


class IPartOperasyonlari(IFikomObject):
    def __init__(self, obj:CDispatch, sahip:IProcessDokuman=None):
        super(IPartOperasyonlari, self).__init__(obj, sahip)
        self.sahip = sahip
        self.tipi = "IPartOperasyonlari"

    def ekle(self, Ismi:str=None):
        self.sahip.secililer.temizle()
        self.sahip.secililer.ekle(self.item(self.sayisi - 1))

        self.anaProgram.komut("Part Operation")

        __po = self.item(self.sayisi - 1)

        __po.urunDokumani = self[0].urunDokumani

        if not Ismi == None:
            __po.ismi = Ismi
            __po.eksenIsmi = Ismi

        return __po


    @property
    def sayisi(self) -> int:
        sayac = 0
        for x in range(1, self.catNesne.ChildrenActivities.Count):
            if self.catNesne.ChildrenActivities.item(x).isSubTypeOf("ManufacturingSetup"):
                sayac = sayac + 1
        return int(sayac)

    def item(self, i) -> IPartOperasyonu:
        sayac = 0
        for x in range(0, self.catNesne.ChildrenActivities.Count):
            if self.catNesne.ChildrenActivities.item(x + 1).isSubTypeOf("ManufacturingSetup"):
                sayac = sayac + 1
                if sayac == i + 1:
                    return IPartOperasyonu(obj=self.catNesne.ChildrenActivities.item(x + 1), sahip=self)

    @property
    def Parametreler(self) -> IParametreler:
        return IParametreler(self.catNesne.Parameters, self)

    def __call__(self):
        aktSayisi = self.sayisi
        return list(map(lambda x: self.item(x), range(aktSayisi)))

    def __str__(self):
        return repr([self.item(x).ismi for x in range(self.sayisi)])

    def __len__(self):
        return int(self.sayisi)

    def __getitem__(self, item) -> IPartOperasyonu:
        return self.item(item)

    def toDict(self):
        pass


import IProcessDokuman