Example #1
0
    def post(self, request: Request):
        try:
            q = request.data
            kayitId = q.get("kayit_id")
            if kayitId is not None and kayitId > -1:
                girisler = MusteriGirisi.objects.filter(id=kayitId)
                if girisler.count() > 0:
                    giris: MusteriGirisi = girisler[0]
                    sube = iliskiVarMi(request.user, giris.secili_sube.id)
                    if request.user.is_superuser or sube is not None:
                        if containsInDictionaryKey(q,
                                                   ["cikis_tarih", "ucret"]):
                            cikis_tarih = dateUtilParse(q.get("cikis_tarih"))
                            giris.cikis_tarih = cikis_tarih
                            giris.ucret = q.get("ucret")
                            giris.save()
                            return createErrorResponse(
                                200, {"message": "Record updated"})
                    else:
                        return createErrorResponse(
                            403, {"message": "Unauthorized for this branch"})
                else:
                    return createErrorResponse(404,
                                               {"message": "Record not found"})
            else:
                return createErrorResponse(
                    400, {"message": "Record not provided correctly"})

        except Exception as exception:
            traceback.print_exc()
            return createErrorResponse(500,
                                       {"error": str(exception.__class__)})
Example #2
0
    def get(self, request, sube=-1):
        if (sube > -1):
            if request.user.is_superuser or iliskiVarMi(request.user,
                                                        sube) is not None:
                iliskiler = SubeTemsilcisi.objects.filter(sube__id=sube)
                calisanlar_parsed = [
                    self.__combineTemsil(iliski) for iliski in iliskiler
                ]
                return createErrorResponse(202, calisanlar_parsed)
            else:
                return createErrorResponse(403,
                                           {"message": "Unauthorized branch"})
        else:

            if request.user.is_superuser:
                iliskiler = SubeTemsilcisi.objects.filter()
                calisanlar_parsed = [
                    self.__combineTemsil(iliski) for iliski in iliskiler
                ]
                return createErrorResponse(202, calisanlar_parsed)
            else:
                subeler = iliskiliSubeler(request.user)
                iliskiler = SubeTemsilcisi.objects.filter(sube__in=subeler)
                calisanlar_parsed = [
                    self.__combineTemsil(iliski) for iliski in iliskiler
                ]
                return createErrorResponse(202, calisanlar_parsed)
Example #3
0
    def post(self, request):
        flag, error_response = _generic_control(request)
        if flag:
            copied = request.data.copy()
            sube_id = copied["sube"]

            sube = Sube.objects.filter(id=sube_id)[0]
            copied["sube"] = {
                "id": sube_id,
                "adres": "asdasd",
                "sube_ismi": "sasdas"
            }
            parsedThing = EkstraGiderSerializer(data=copied)
            if parsedThing.is_valid():
                copied["sube"] = sube
                yeniGider = EkstraGider(**copied)
                yeniGider.save()
                return createErrorResponse(
                    201, {
                        "message": "Expense created successfully",
                        "object": EkstraGiderSerializer(yeniGider).data
                    })
            else:
                return createErrorResponse(
                    400, {
                        "errors": parsedThing.errors,
                        "message": "Required fields are missing"
                    })
        else:
            return error_response
Example #4
0
def _generic_control(request, subePreprovide=None) -> (bool, Response):
    """Controls is branch provided and is user any privaliges
    Return 1: when controlling if has a issue, return false. Else then, it is true
    Return 2: If has issue, response will be returned. But there is no issue, nothing returned"""
    sube_ = ""
    if subePreprovide is None:
        sube_: str = request.query_params["sube_id"]
    else:
        sube_ = subePreprovide
    if type(sube_) is int or sube_.isnumeric():
        sube = int(sube_)
        flag = False
        if (request.user.is_superuser):
            flag = True
        else:
            iliski = iliskiVarMi(request.user, sube)
            if iliski is not None:
                flag = True
        if flag:
            return True, None
            return False, createErrorResponse(200, paginated_expenses)
        else:
            return False, createErrorResponse(404,
                                              {"message": "Branch not found"})
    else:
        return False, createErrorResponse(400,
                                          {"message": "Branch is missing"})
Example #5
0
    def post(self, request):
        try:
            data: dict = request.data
            if containsInDictionaryKey(data, ["musteri_isim",
                                              "musteri_soyisim",
                                              "musteri_tel",
                                              "hizmetTipi",
                                              "subeId",
                                              "randevuTarih"]) or \
                    containsInDictionaryKey(data, ["musteri_id", "hizmetTipi", "subeId", "randevuTarih"]):
                # create RANDEVU(Appointment) instance - RANDEVU örneği yaratma
                # find SUBE (Branch) - şube arama


                subeler = Sube.objects.filter(id=data.get("subeId"))
                email, tel = "", "";
                if ("musteri_email" in data.keys()):
                    email = data.get("musteri_email")

                if ("musteri_tel" in data.keys()):
                    tel = data.get("musteri_tel")

                musteri = try_fetch_customer(data.get("musteri_id"), data.get("musteri_isim"),
                                             data.get("musteri_soyisim"),email,tel)

                if subeler.count() > 0:
                    sube = subeler[0]
                    tarih = dateUtilParse(data.get("randevuTarih"))
                    # tarih = datetime.strptime(data.get("tarih"),"%Y-%m-%dT%H:%M:%S.%Z")
                    
                    randevu = Randevu(
                        secili_sube=sube,
                        hizmet_turu=data.get("hizmetTipi"),
                        tarih=tarih,
                        musteri=musteri
                    )
                    randevu.save()
                    return createErrorResponse(
                        200, {"message": """Appointment created successfully"""}
                    )
                else:
                    return createErrorResponse(
                        400, {"message": """Branch not found"""}
                    )  #

            else:
                return createErrorResponse(
                    400,
                    {
                        "message": """1 field or more than 1 fields are missing. Needed "isim", "soyisim" (first - last names),"hizmetTipi" (service type),"subeId" (branch identify),"tarih" (date with hours) fields """
                    },
                )  #

        except Exception as exception:
            traceback.print_exc()
            return createErrorResponse(500, {"error": str(exception.__class__)})
Example #6
0
    def post(self, request):
        try:

            ustDuzeyHak = request.data["highlevelRight"]

            subeId = request.data["subeId"] if "subeId" in request.data else -1
            arananSube = None
            if subeId == -1:
                return createErrorResponse(404,
                                           {"message": "Branch not found"})
            else:
                arananSube = iliskiVarMi(request.user, subeId)
                if arananSube is None:
                    return createErrorResponse(404,
                                               {"message": "Branch not found"})

            stFilter = ""
            if request.user.is_superuser:
                stFilter = SubeTemsilcisi.objects.filter(sube__id=subeId)[0]
            elif request.user.is_staff:
                kul_id = request.user.id
                stFilter = SubeTemsilcisi.objects.filter(
                    sube__id=subeId, kullanici__id=kul_id)[0]
                if stFilter is None or stFilter.ustduzey_hak is False:
                    ustDuzeyHak = False

            serialized = UserSerializer(data=request.data)

            # subeAuthorized = iliskiliSubeler(request.user)
            if subeId > -1 and iliskiVarMi(request.user, subeId):
                if serialized.is_valid():
                    createdUser = User.objects.create_user(
                        email=request.data['email'],
                        username=request.data['username'],
                        password=request.data['password'],
                        first_name=request.data['firstname'],
                        last_name=request.data['lastname'],
                        is_staff=True)
                    createdUser.save()
                    yeniSubeIliskisi = SubeTemsilcisi(sube=stFilter.sube,
                                                      kullanici=createdUser,
                                                      ustduzey_hak=ustDuzeyHak)
                    yeniSubeIliskisi.save()
                    return Response(serialized.data,
                                    status=status.HTTP_201_CREATED)
                else:
                    return createErrorResponse(404, serialized.errors)
            else:
                return Response(serialized.errors,
                                status=status.HTTP_400_BAD_REQUEST)
        except Exception as exception:
            traceback.print_exc()
            return createErrorResponse(500,
                                       {"error": str(exception.__class__)})
Example #7
0
    def post(self, request):

        try:
            upd = {}
            if "id" in request.data.keys() and \
                    (request.user.is_superuser or SubeTemsilcisi.objects.filter(kullanici=request.user,
                                                                                sube__id__in=MusteriGirisi.objects.
                                                                                        filter(id=request.data["id"]).
                                                                                        values_list("secili_sube",
                                                                                                    flat=True))):
                data = request.data

                if data.get("cikis_tarih"
                            ) is not None or data.get("cikis_tarih") != "":
                    upd["cikis_tarih"] = dateUtilParse(data.get("cikis_tarih"))

                if data.get("giris_tarih"
                            ) is not None or data.get("giris_tarih") != "":
                    upd["giris_tarih"] = dateUtilParse(data.get("giris_tarih"))

                if data.get("hizmet_turu") is not None:
                    upd["hizmet_turu"] = data.get("hizmet_turu")

                if data.get("ucret") is not None:
                    upd["ucret"] = data.get("ucret")

                if data.get("prim") is not None:
                    upd["prim"] = data.get("prim")

                if data.get("calisan") is not None:
                    upd["calisan"] = User.objects.filter(
                        id=int(data.get("calisan")))[0]

                recordId = int(request.data["id"])
                kayit = MusteriGirisi.objects.filter(id=recordId).all()[0]
                for key in upd.keys():
                    setattr(kayit, key, upd[key])
                kayit.save()
                return Response({"message": "Record updated"})

            else:
                return createErrorResponse(404, {"message": "Not found"})

        except Exception as exception:
            traceback.print_exc()
            return createErrorResponse(500,
                                       {"error": str(exception.__class__)})
Example #8
0
    def get(self, request: Request):
        """@sadeceCikmayanlar çıkış tarihi eklenmemiş kayıtları gösterir
           @subeFiltre"""

        sadeceCikmayanlar = False
        subeFiltre = -1

        if request.query_params.get("sadece-cikmayanlar") == "1":
            sadeceCikmayanlar = True

        subeId: str = request.query_params.get("sube-id")
        if (subeId != "" and subeId is not None
                and re.match("^([0-9].*)$", subeId) is not None):
            subeFiltre = int(subeId)

        customersQ = MusteriGirisi.objects
        if sadeceCikmayanlar:
            customersQ = customersQ.filter(cikis_tarih__isnull=True)
        relations = iliskiliSubeler(request.user)
        # admin control
        if request.user.is_superuser:
            customerEntries = None
            if subeFiltre == -1:
                customerEntries = MusteriGirisi.objects.order_by("-id").all()
            else:
                customerEntries = MusteriGirisi.objects.filter(
                    secili_sube__id=subeFiltre).order_by("-id")
            paginated = pagination(customerEntries,
                                   request.query_params.get("page"),
                                   request.query_params.get("size"))
            return Response(makeArraySerializationsQuery(paginated))
        # if not admin but staff
        elif request.user.is_staff:
            if subeFiltre > -1:
                iliskiliSube = iliskiVarMi(request.user, subeFiltre, relations)
                if iliskiliSube is not None:
                    customerEntries = customersQ.filter(
                        secili_sube=iliskiliSube).order_by("-id")
                    paginated = pagination(customerEntries,
                                           request.query_params.get("page"),
                                           request.query_params.get("size"))
                    return Response(makeArraySerializationsQuery(paginated))
                else:
                    return createErrorResponse(
                        403,
                        {
                            "message":
                            "You aren't related with ŞUBE(Branch)" +
                            str(subeFiltre)
                        },
                    )
            else:
                customerEntries = customersQ.filter(
                    secili_sube__in=relations).order_by("-id")
                return Response(
                    makeArraySerializationsQuery(customerEntries.all()))
Example #9
0
 def get(self, request: Request):
     kayit_id = request.query_params.get("kayit_id")
     if (kayit_id is not None and kayit_id.isnumeric()):
         kayit = MusteriGirisi.objects.filter(id=int(kayit_id))
         if (kayit.count() > 0):
             kayit_: MusteriGirisi = kayit[0]
             temsil = SubeTemsilcisi.objects.filter(kullanici=request.user,
                                                    sube=kayit_.secili_sube)
             if request.user.is_superuser or temsil.count() > 0:
                 kayit_.delete()
                 return createErrorResponse(200,
                                            {"message": "Kayit silindi"})
             else:
                 return createErrorResponse(403,
                                            {"message": "İzin bulunamadı"})
         else:
             return createErrorResponse(401,
                                        {"message": "Kayit bulunamadı"})
     else:
         return createErrorResponse(401, {"message": "Kayit bulunamadı"})
Example #10
0
 def get(self, request: Request):
     flag, errorResponse = _generic_control(request)
     if flag:
         date_ = request.query_params["date"]
         sube = int(request.query_params["sube_id"])
         expenses = extra_expenses(sube, date_)
         paginated_expenses = pagination(expenses,
                                         request.query_params.get("page"),
                                         request.query_params.get("size"))
         return createErrorResponse(200, paginated_expenses)
     else:
         return errorResponse
Example #11
0
 def get(self, request):
     if request.query_params[
             "gider_id"] is not None and request.query_params[
                 "gider_id"].isnumeric():
         gider_id = int(request.query_params["gider_id"])
         giderler = EkstraGider.objects.filter(id=gider_id)
         if giderler.count() > 0:
             gider: EkstraGider = giderler[0]
             giderSube = gider.sube.id
             flag, err_response = _generic_control(request, giderSube)
             if flag:
                 gider.delete()
                 return createErrorResponse(
                     200, {"message": "Expense record is removed"})
             else:
                 return err_response
         else:
             return createErrorResponse(404,
                                        {"message": "Expense not found"})
     else:
         return createErrorResponse(
             400, {"message": "Expense not provided properly"})
Example #12
0
    def get(self, request : Request):
        try:
            subeId: str = request.query_params.get("sube-id")
            if request.user.is_superuser:
                if subeId is not None and subeId.isnumeric():
                    query = Randevu.objects.filter(secili_sube__id=int(subeId)).order_by("-id")
                    paginated = pagination(query, request.query_params.get("page"), request.query_params.get("size"));
                    return Response(self.__convertAppointments(paginated))
                else:
                    paginated = pagination(Randevu.objects.order_by("-id"), request.query_params.get("page"),
                                           request.query_params.get("size")).order_by("-id")
                    return Response(self.__convertAppointments(paginated))

            else:
                query = Randevu.objects
                if subeId is not None and subeId.isnumeric():
                    temsil = iliskiVarMi(request.user, int(subeId))
                    if temsil is not None:

                        query = query.filter(secili_sube=temsil.sube).order_by("-id")
                        paginated = pagination(query, request.query_params.get("page"),
                                               request.query_params.get("size"))
                        return Response(self.__convertAppointments(paginated))
                    else:
                        return createErrorResponse(403, {"message": "You aren't authenticated with this branch"})
                else:
                    iliskiliBranchler = iliskiliSubeler(request.user)
                    query = Randevu.objects.filter(secili_sube__in=iliskiliBranchler).order_by("-id")
                    paginated = pagination(query, request.query_params.get("page"),
                                           request.query_params.get("size"))
                    return Response(self.__convertAppointments(paginated))



        except Exception as exception:
            traceback.print_exc()
            return createErrorResponse(500, {"error": str(exception.__class__)})
Example #13
0
 def get(self, request, randevuId):
     if randevuId is None:
         return createErrorResponse(400, {"message": "randevu Id not provided"})
     else:
         randevular = Randevu.objects.filter(id=randevuId)
         randevu = randevular[0] if randevular.count() > 0 else None
         if randevu is not None:
             iliski = iliskiVarMi(request.user, randevu.secili_sube.id)
             if iliski is not None or request.user.is_superuser:
                 randevu.delete()
                 return Response({"message": "Appointment deleted"}, 200)
             else:
                 return Response({"message": "You are unauthorized for this branch"}, 403)
         else:
             return Response({"message": "Randevu not found"}, 404)
Example #14
0
    def get(self, request: Request):
        subeFiltre = None
        subeId: str = request.query_params.get("sube-id")
        if (subeId != "" and subeId is not None
                and re.match("^([0-9].*)$", subeId) is not None):
            subeFiltre = int(subeId)
            temsil = iliskiVarMi(request.user, subeFiltre)
            if request.user.is_superuser or temsil is not None:
                rd = []
                musteriIds = MusteriGirisi.objects.filter(
                    secili_sube__id=subeFiltre).values_list('musteri',
                                                            flat=True)
                musteriler = Musteri.objects.filter(id__in=musteriIds)
                # sube__id=subeFiltre
                # krediler =

                for musteri in musteriler:
                    rd.append(MusteriSerializer(musteri).data)
                return Response(rd)
            else:
                return createErrorResponse(404,
                                           {"message": "Sube is not found"})
        else:
            return createErrorResponse(400, {"message": "Sube id is invalid"})
Example #15
0
def _report(request, daily=False):
    subeid_ = request.query_params.get("sube")
    if subeid_ and subeid_.isnumeric():
        subeid = int(subeid_)
        iliskiler = SubeTemsilcisi.objects.filter(sube__id=subeid,
                                                  kullanici=request.user)

        iliski = iliskiler[0] if iliskiler.count() > 0 else None
        if request.user.is_superuser or iliski is not None:
            aylik_toplam_gelir = 0
            aylik_toplam_prim = 0
            bugun = ""
            if "refdate" in request.query_params.keys():
                bugun = dateUtilParse(request.query_params["refdate"])
            else:
                bugun = timezone.now()
            gidertoplam = extra_expenses_sum(subeid, bugun,
                                             daily)["tutar__sum"]
            if gidertoplam is None:
                gidertoplam = 0
            calisan_primler = None
            if request.user.is_superuser or iliski.ustduzey_hak is True:
                calisan_primler = {}

            filter = {
                "secili_sube__id": subeid,
                "giris_tarih__month": bugun.month,
                "giris_tarih__year": bugun.year
            }
            if daily is True:
                filter["giris_tarih__day"] = str(bugun.day)

            aylik_kayitlar = MusteriGirisi.objects.filter(**filter)
            card_income = 0
            cash_income = 0
            other_income = 0
            for kayit in aylik_kayitlar:
                aylik_toplam_prim += kayit.prim
                aylik_toplam_gelir += kayit.ucret
                if request.user.is_superuser or iliski.ustduzey_hak is True:
                    if kayit.calisan.id in calisan_primler.keys():
                        calisan_primler[kayit.calisan.id] += kayit.prim
                    else:
                        calisan_primler[kayit.calisan.id] = kayit.prim

                if kayit.odeme_yontemi == "Kart":
                    card_income += kayit.ucret
                elif kayit.odeme_yontemi == "Nakit":
                    cash_income += kayit.ucret
                else:
                    other_income += kayit.ucret
            return Response({
                "summary": {
                    "income": aylik_toplam_gelir,
                    "income_channels": {
                        "cash": cash_income,
                        "card": card_income,
                        "other": other_income
                    },
                    "bonus_grand": aylik_toplam_prim,
                    "extra_expenses": gidertoplam,
                    "grand_expenses": aylik_toplam_prim + gidertoplam
                },
                "bonuses": calisan_primler,
            })
        else:
            return createErrorResponse(
                403, {"message": "Not authorized for branch"})
    else:
        return createErrorResponse(400, {"message": "Branch is not provided"})
Example #16
0
    def post(self, request):
        try:
            data: dict = request.data
            if containsInDictionaryKey(
                    data, [
                        "musteri_isim", "musteri_soyisim", "musteri_email",
                        "musteri_tel", "hizmet_turu", "giris_tarih",
                        "secili_sube", "calisan"
                    ]
                    # optional fields = ucret, cikisTarihi
            ) or containsInDictionaryKey(data, [
                    "musteri_id", "hizmet_turu", "giris_tarih", "secili_sube",
                    "calisan"
            ]
                                         # optional fields = ucret, cikisTarihi
                                         ):
                ilgili_calisan_id = data.get("calisan")
                bulunanCalisan = SubeTemsilcisi.objects.filter(
                    kullanici__id=int(ilgili_calisan_id),
                    sube__id=int(data.get("secili_sube")))

                email, tel = "", ""
                if ("musteri_email" in data.keys()):
                    email = data.get("musteri_email")

                if ("musteri_tel" in data.keys()):
                    tel = data.get("musteri_tel")

                musteri = try_fetch(data.get("musteri_id"),
                                    data.get("musteri_isim"),
                                    data.get("musteri_soyisim"), email, tel)

                if bulunanCalisan.count() > -1:
                    cikis_tarih = None
                    giris_tarih = dateUtilParse(data.get("giris_tarih"))

                    ucret = data.get("ucret")
                    prim = data.get("prim")
                    calisan = None
                    calisanId = data.get("calisan")

                    if calisanId is not None and calisanId.isnumeric():
                        calisan = User.objects.filter(id=int(calisanId))

                    if (calisan is None):
                        calisan = request.user

                    if data.get("cikis_tarih") is not None:
                        cikis_tarih = dateUtilParse(data.get("cikis_tarih"))

                    iliski = iliskiVarMi(request.user, data.get("secili_sube"))

                    calisanIliski = SubeTemsilcisi.objects.filter(
                        kullanici=calisan[0], sube=data.get("secili_sube"))[0]

                    if request.user.is_superuser or iliski is not None:
                        if data.get("kredi_ekle") is True or data.get(
                                "kredi_tuket") is True:
                            tuketilecek_kredi_turu = data.get(
                                "kredi_tuketim_turu")
                            eklenecek_kredi_turu = data.get(
                                "kredi_eklenme_turu")

                            eklenecek_kredi, ek_taze = None, None
                            tuketilecek_kredi, tk_taze = None, None

                            if data.get("kredi_ekle") and eklenecek_kredi_turu and \
                                    eklenecek_kredi_turu.isspace() is not True:
                                eklenecek_kredi, ek_taze = MusteriKredi.objects.get_or_create(
                                    musteri=musteri,
                                    sube=iliski.sube,
                                    hizmet_turu=eklenecek_kredi_turu)

                            if eklenecek_kredi:
                                # kredi ekleme
                                kredi_eklenecek_sayi = data.get(
                                    "credit_will_be_added")
                                if kredi_eklenecek_sayi is not None and kredi_eklenecek_sayi > 0:
                                    eklenecek_kredi.sayi += kredi_eklenecek_sayi

                            if data.get("kredi_tuket") and tuketilecek_kredi_turu and \
                                    tuketilecek_kredi_turu.isspace() is not True:
                                if (eklenecek_kredi is not None) and (
                                        eklenecek_kredi_turu
                                        == tuketilecek_kredi_turu):
                                    tuketilecek_kredi = eklenecek_kredi
                                else:
                                    tuketilecek_kredi, tk_taze = MusteriKredi.objects. \
                                        get_or_create(musteri=musteri,
                                                      sube=iliski.sube, hizmet_turu=tuketilecek_kredi_turu)

                            if tuketilecek_kredi:
                                if tuketilecek_kredi.sayi > 0:
                                    tuketilecek_kredi.sayi -= 1
                                else:
                                    return createErrorResponse(
                                        400, {
                                            "message":
                                            "Müşterinin kredi hakkı bulunmamaktadır"
                                        })
                            if eklenecek_kredi and \
                                    (tuketilecek_kredi is None or tuketilecek_kredi.id != eklenecek_kredi.id):
                                eklenecek_kredi.save()
                            if tuketilecek_kredi:
                                tuketilecek_kredi.save()

                        musteriKayit = MusteriGirisi(
                            musteri=musteri,
                            hizmet_turu=data.get("hizmet_turu"),
                            secili_sube=iliski.sube,
                            giris_tarih=giris_tarih,
                            cikis_tarih=cikis_tarih,
                            odeme_yontemi=data.get("odeme_yontemi"),
                            ucret=ucret if ucret is not None else 0,
                            calisan=calisanIliski.kullanici,
                            prim=prim)
                        musteriKayit.save()
                        return createErrorResponse(
                            200,
                            MusteriGirisiSerializer(musteriKayit).data)
                    else:
                        return createErrorResponse(
                            403,
                            {
                                "message":
                                "You aren't related with ŞUBE(Branch)" +
                                str(request.data.get("sube"))
                            },
                        )
                else:
                    createErrorResponse(
                        404,
                        {"message": "Corresponding User in branch not found"})
            else:
                return createErrorResponse(
                    400,
                    {
                        "message":
                        """1 field or more than 1 fields are missing. 
                                    Needed "isim", "soyisim" (first - last names),"hizmetTipi" (service type),
                                    "subeId" (branch identify),"tarih" (date with hours) fields """
                    },
                )  #

        except Exception as exception:
            traceback.print_exc()
            return createErrorResponse(500,
                                       {"error": str(exception.__class__)})