Exemplo n.º 1
0
 def post(self, request, format=None):
     serializer = QuestionSerializer(data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(response_json(True, serializer.data, None))
     return Response(
         response_json(False, None, constants.TEXT_OPERATION_UNSUCCESSFUL))
Exemplo n.º 2
0
    def post(self, request, format=None):
        title = get_data_param(request, 'title', None)

        questionnaire = Questionnaire.get_if_exists_by_title(title)
        serializer = QuestionnaireSerializer(questionnaire, data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(response_json(True, serializer.data, None))
        return Response(
            response_json(False, None, constants.TEXT_OPERATION_UNSUCCESSFUL))
Exemplo n.º 3
0
    def post(self, request, format=None):
        name = get_data_param(request, 'name', None)
        city_id = get_data_param(request, 'city_id', None)

        request.data["city"] = city_id
        branch = Branch.get_if_exists(name)
        serializer = BranchSerializer(branch, data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(response_json(True, serializer.data, None))
        return Response(response_json(False, None, constants.TEXT_OPERATION_UNSUCCESSFUL))
Exemplo n.º 4
0
    def post(self, request, format=None):
        name = get_data_param(request, 'name', None)
        region_id = get_data_param(request, 'region_id', None)

        request.data["region"] = region_id
        # city = City.get_if_exists(name) As MC need multiple entries with same name
        serializer = CitySerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(response_json(True, serializer.data, None))
        return Response(
            response_json(False, None, constants.TEXT_OPERATION_UNSUCCESSFUL))
Exemplo n.º 5
0
    def post(self, request, format=None):
        name = get_data_param(request, 'name', None)
        area_id = get_data_param(request, 'area_id', None)

        request.data["area"] = area_id
        region = Region.get_if_exists(name)
        serializer = RegionSerializer(region, data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(response_json(True, serializer.data, None))
        return Response(
            response_json(False, None, constants.TEXT_OPERATION_UNSUCCESSFUL))
Exemplo n.º 6
0
    def post(self, request, format=None):
        if "user" in request.data:
            user_data = request.data["user"]
            user = get_related_user(user_data)
        else:
            user = None

        feedback_params = request.data
        feedback_params['user'] = user.id if user else None

        serializer = FeedbackSerializer(data=request.data)
        if serializer.is_valid():
            feedback = serializer.save()
            if feedback:
                if "options" in request.data:
                    options_list = request.data["options"]

                    for option_id in options_list:
                        FeedbackOption(feedback=feedback,
                                       option_id=option_id).save()

                feedback.mark_feedback_status()
                feedback.keyword_analysis()
                feedback.mark_segment()

                q = RedisQueue('feedback_redis_queue')
                q.put(str(get_live_record()))
                # q.put("ping")

                if feedback.is_negative() and feedback.not_empty():
                    feedback.mark_for_report()
                    feedback_json = {
                        "is_bad": feedback.is_bad(),
                        "branch_name": feedback.branch.name,
                        "branch_id": feedback.branch.id,
                        "city_name": feedback.branch.city.name,
                        "customer_name": feedback.customer_name(),
                        "customer_phone": feedback.customer_phone(),
                        "customer_email": feedback.customer_email(),
                        "problems": feedback.problems(),
                        "comment": feedback.comment,
                        "server_link": settings.server_url,
                    }

                    # send_negative_feedback_email(feedback_json)
                    send_negative_feedback_email.delay(feedback_json)

                return Response(response_json(True, None, None))
        return Response(
            response_json(False, None, constants.TEXT_OPERATION_UNSUCCESSFUL))
Exemplo n.º 7
0
    def get(self, request, user, format=None):
        role = get_param(request, 'role', None)
        id = get_param(request, 'id', None)
        director_id = get_param(request, 'director_id', None)
        assistant_director_id = get_param(request, 'assistant_director_id', None)
        operational_manager_id = get_param(request, 'operational_manager_id', None)
        operational_consultant_id = get_param(request, 'operational_consultant_id', None)
        branch_manager_id = get_param(request, 'branch_manager_id', None)

        if id:
            data = UserInfo.get_person_dict(int(role), id)
        elif director_id:
            data = UserInfo.get_children_dict(UserRolesEnum.ASSISTANT_DIRECTOR, UserRolesEnum.DIRECTOR, director_id)
        elif assistant_director_id:
            data = UserInfo.get_children_dict(UserRolesEnum.OPERATIONAL_MANAGER, UserRolesEnum.ASSISTANT_DIRECTOR, assistant_director_id)
        elif operational_manager_id:
            data = UserInfo.get_children_dict(UserRolesEnum.OPERATIONAL_CONSULTANT, UserRolesEnum.OPERATIONAL_MANAGER, operational_manager_id)
        elif operational_consultant_id:
            data = UserInfo.get_children_dict(UserRolesEnum.BRANCH_MANAGER, UserRolesEnum.OPERATIONAL_CONSULTANT, operational_consultant_id)
        elif branch_manager_id:
            data = UserInfo.get_children_dict(UserRolesEnum.GRO, UserRolesEnum.BRANCH_MANAGER, branch_manager_id)
        else:
            data = UserInfo.get_people_dict(int(role))

        return Response(response_json(True, data, None))
Exemplo n.º 8
0
 def get(self, request, format=None):
     region_id = request.query_params.get('region', None)
     if region_id:
         cities = City.objects.filter(region__exact=region_id)
     else:
         cities = City.objects.all()
     serializer = CitySerializer(cities, many=True)
     return Response(response_json(True, serializer.data, None))
Exemplo n.º 9
0
 def get(self, request, format=None):
     branch_id = get_param(request, 'branch_id', None)
     questionnaire = Questionnaire.objects.filter(isActive=True,
                                                  branch=branch_id).first()
     data = None
     if questionnaire:
         data = questionnaire.to_dict()
     return Response(response_json(True, data, None))
Exemplo n.º 10
0
    def get(self, request, format=None):
        genre_type = get_param(request, 'genre_type', None)

        if genre_type:
            questions = Question.objects.filter(genreType=genre_type)
        else:
            questions = Question.objects.all()
        data = [question.to_dict() for question in questions]
        return Response(response_json(True, data, None))
Exemplo n.º 11
0
    def delete(self, request, user, format=None):
        try:
            id = get_default_param(request, 'id', None)

            user = User.objects.get(pk=id)
            if user:
                user_info = user.info.first()
                if user_info:
                    if user_info.is_active:
                        user_info.is_active = False
                    else:
                        user_info.is_active = True
                    user_info.save()
                    return Response(response_json(True, user_info.to_dict(), None))

            return Response(response_json(False, None, constants.TEXT_OPERATION_UNSUCCESSFUL))
        except User.DoesNotExist as e:
            return Response(response_json(False, None, constants.TEXT_DOES_NOT_EXISTS))
Exemplo n.º 12
0
    def get(self, request, user, format=None):
        try:
            now = datetime.now()
            region_id, city_id, branch_id = get_user_data(user)

            date_to_str = get_param(request, 'date_to', str(now.date()))
            date_from_str = get_param(request, 'date_from',
                                      str((now - timedelta(days=1)).date()))

            data = {
                "benchmark_analysis":
                self._get_benchmark_counts(date_from_str, date_to_str),
                "segmentation_rating":
                self._get_segments(date_from_str, date_to_str, region_id,
                                   city_id, branch_id),
                "overall_rating":
                self._get_overall_feedback(date_from_str, date_to_str,
                                           region_id, city_id, branch_id),
                "patch_analysis":
                self._get_patch_analysis(date_from_str, date_to_str, region_id,
                                         city_id, branch_id),
                "complaint_view":
                self._get_complaint_view(date_from_str, date_to_str, region_id,
                                         city_id, branch_id),
                "concerns":
                self._get_top_concerns(),
                "opportunity_analysis":
                self._get_opportunity_analysis(date_from_str, date_to_str,
                                               region_id, city_id, branch_id),
                "age_group_analysis":
                self._get_customer_analysis(date_from_str, date_to_str,
                                            region_id, city_id, branch_id),
                "recommendation_analysis":
                self._get_recommendation_analysis(date_from_str, date_to_str,
                                                  region_id, city_id,
                                                  branch_id)
            }

            return Response(response_json(True, data, None))

        except Exception as e:
            return Response(
                response_json(False, None,
                              constants.TEXT_OPERATION_UNSUCCESSFUL))
Exemplo n.º 13
0
    def get(self, request, user, format=None):
        try:
            id = get_param(request, 'id', None)

            user = User.objects.get(pk=id)
            if user:
                user_info = user.info.first()
                if user_info:
                    if user_info.role == UserRolesEnum.BRANCH_MANAGER or user_info.role == UserRolesEnum.GRO:
                        user_info.branch_id = None
                        user_info.save()
                    elif user_info.role == UserRolesEnum.OPERATIONAL_CONSULTANT:
                        user_info.region_id = None
                        user_info.save()
                    return Response(response_json(True, user_info.to_dict(), None))

            return Response(response_json(False, None, constants.TEXT_OPERATION_UNSUCCESSFUL))
        except User.DoesNotExist as e:
            return Response(response_json(False, None, constants.TEXT_DOES_NOT_EXISTS))
Exemplo n.º 14
0
    def put(self, request, format=None):
        id = get_data_param(request, 'id', None)

        try:
            question = Question.objects.get(pk=id)
            serializer = QuestionSerializer(question, data=request.data)
            if serializer.is_valid():
                serializer.save()
                return Response(response_json(True, serializer.data, None))
            return Response(
                response_json(False, None,
                              constants.TEXT_OPERATION_UNSUCCESSFUL))
        except Question.DoesNotExist as e:
            return Response(
                response_json(False, None, constants.TEXT_DOES_NOT_EXISTS))
        except Exception as e:
            return Response(
                response_json(False, None,
                              constants.TEXT_OPERATION_UNSUCCESSFUL))
Exemplo n.º 15
0
 def get(self, request, format=None):
     region_id = request.query_params.get('region', None)
     city_id = request.query_params.get('city', None)
     if region_id:
         branches = Branch.objects.filter(city__region__exact=region_id)
     elif city_id:
         branches = Branch.objects.filter(city__exact=city_id)
     else:
         branches = Branch.objects.all()
     serializer = BranchSerializer(branches, many=True)
     return Response(response_json(True, serializer.data, None))
Exemplo n.º 16
0
    def get(self, request, user, format=None):
        region_id, city_id, branch_id = get_user_data(user)

        if branch_id:
            branches = Branch.objects.filter(id=branch_id)
        elif region_id:
            branches = Branch.objects.filter(city__region__exact=region_id)
        else:
            branches = Branch.objects.all()
        serializer = BranchSerializer(branches, many=True)
        return Response(response_json(True, serializer.data, None))
Exemplo n.º 17
0
 def get(self, request, user, format=None):
     region_id, city_id, branch_id = get_user_data(user)
     if branch_id:
         questionnaires = Questionnaire.objects.filter(
             branch=branch_id).order_by("-created_at")
     elif region_id:
         questionnaires = Questionnaire.objects.filter(
             branch__city__region__exact=region_id).order_by("-created_at")
     else:
         questionnaires = Questionnaire.objects.all().order_by(
             "-created_at")
     serializer = QuestionnaireSerializer(questionnaires, many=True)
     return Response(response_json(True, serializer.data, None))
Exemplo n.º 18
0
    def put(self, request, user, format=None):
        try:
            id = get_data_param(request, 'id', None)
            new_password = get_data_param(request, 'new_password', None)
            email = get_data_param(request, 'email', None)
            phone_no = get_data_param(request, 'phone_no', None)
            first_name = get_data_param(request, 'first_name', None)
            last_name = get_data_param(request, 'last_name', None)
            branch_id = get_data_param(request, 'branch_id', None)
            region_id = get_data_param(request, 'region_id', None)

            branch = Branch.objects.get(pk=branch_id) if branch_id else None
            region = Region.objects.get(pk=region_id) if region_id else None

            if branch and branch.is_associated():
                return Response(response_json(False, None, "Branch is already Associated"))
            elif region and region.is_associated():
                return Response(response_json(False, None, "Region is already Associated"))

            user = User.objects.get(pk=id)
            if user:
                user.email = email if email else user.email
                if new_password:
                    user.set_password(new_password)
                user.first_name = first_name if first_name else user.first_name
                user.last_name = last_name if last_name else user.last_name
                user.save()

            user_info = user.info.first()
            if user_info:
                user_info.branch_id = branch.id if branch else user_info.branch_id
                user_info.region_id = region.id if region else user_info.region_id
                user_info.phone_no = phone_no if phone_no else user_info.phone_no
                user_info.save()

            return Response(response_json(True, user_info.to_dict(), None))

        except User.DoesNotExist as e:
            return Response(response_json(False, None, constants.TEXT_DOES_NOT_EXISTS))
        except Branch.DoesNotExist as e:
            return Response(response_json(False, None, constants.TEXT_DOES_NOT_EXISTS))
        except Region.DoesNotExist as e:
            return Response(response_json(False, None, constants.TEXT_DOES_NOT_EXISTS))
Exemplo n.º 19
0
 def get(self, request, format=None):
     options = Option.objects.all()
     serializer = OptionSerializer(options, many=True)
     return Response(response_json(True, serializer.data, None))
Exemplo n.º 20
0
    def get(self, request, format=None):
        branch_id = get_param(request, 'branch_id', None)

        users = UserInfo.objects.filter(branch=branch_id, is_active=True)
        data = [user.to_dict() for user in users]
        return Response(response_json(True, data, None))
Exemplo n.º 21
0
    def post(self, request, format=None):
        try:
            role = get_data_param(request, 'role', None)
            username = get_data_param(request, 'username', None)
            first_name = get_data_param(request, 'first_name', None)
            last_name = get_data_param(request, 'last_name', None)
            password = get_data_param(request, 'password', None)
            email = get_data_param(request, 'email', None)
            phone_no = get_data_param(request, 'phone_no', None)
            branch_id = get_data_param(request, 'branch_id', None)
            region_id = get_data_param(request, 'region_id', None)
            parent_id = get_data_param(request, 'parent_id', None)

            if role:
                branch = Branch.objects.get(pk=branch_id) if branch_id else None
                parent_user = User.objects.get(pk=parent_id) if parent_id else None
                parent = parent_user.info.first() if parent_user else None
                region = Region.objects.get(pk=region_id) if region_id else None

                if branch and parent:
                    if role == UserRolesEnum.GRO:
                        user = create_user(username, first_name, last_name, email, password)
                        user_info = UserInfo.objects.create(user=user, phone_no=phone_no, role=UserRolesEnum.GRO,
                                                            branch=branch, parent=parent)
                        return Response(response_json(True, user_info.to_dict(), None))
                    elif role == UserRolesEnum.BRANCH_MANAGER:
                        if not branch.is_associated():
                            user = create_user(username, first_name, last_name, email, password)
                            user_info = UserInfo.objects.create(user=user, phone_no=phone_no, role=UserRolesEnum.BRANCH_MANAGER,
                                                        branch=branch, parent=parent)
                            return Response(response_json(True, user_info.to_dict(), None))
                        else:
                            return Response(response_json(False, None, "Branch already Associated"))
                elif region and parent:
                    if role == UserRolesEnum.OPERATIONAL_CONSULTANT:
                        if not region.is_associated():
                            user = create_user(username, first_name, last_name, email, password)
                            user_info = UserInfo.objects.create(user=user, phone_no=phone_no, role=UserRolesEnum.OPERATIONAL_CONSULTANT,
                                                        region=region, parent=parent)
                            return Response(response_json(True, user_info.to_dict(), None))
                        else:
                            return Response(response_json(False, None, "Region already Associated"))
                elif parent:
                    if role == UserRolesEnum.OPERATIONAL_MANAGER:
                        user = create_user(username, first_name, last_name, email, password)
                        user_info = UserInfo.objects.create(user=user, phone_no=phone_no,
                                            role=UserRolesEnum.OPERATIONAL_MANAGER, parent=parent)
                        return Response(response_json(True, user_info.to_dict(), None))
                    elif role == UserRolesEnum.ASSISTANT_DIRECTOR:
                        user = create_user(username, first_name, last_name, email, password)
                        user_info = UserInfo.objects.create(user=user, phone_no=phone_no,
                                            role=UserRolesEnum.ASSISTANT_DIRECTOR, parent=parent)
                        return Response(response_json(True, user_info.to_dict(), None))
                else:
                    if role == UserRolesEnum.DIRECTOR:
                        user = create_user(username, first_name, last_name, email, password)
                        user_info = UserInfo.objects.create(user=user, phone_no=phone_no, role=UserRolesEnum.DIRECTOR)
                        return Response(response_json(True, user_info.to_dict(), None))

            return Response(response_json(False, None, constants.TEXT_OPERATION_UNSUCCESSFUL))
        except IntegrityError as e:
            return Response(response_json(False, None, "Username " + constants.TEXT_ALREADY_EXISTS))
Exemplo n.º 22
0
 def get(self, request, format=None):
     promotions = Promotion.objects.all().order_by("-created_at")
     serializer = PromotionSerializer(promotions, many=True)
     return Response(response_json(True, serializer.data, None))
Exemplo n.º 23
0
 def get(self, request, format=None):
     promotion = Promotion.objects.filter(isActive=True).first()
     data = None
     if promotion:
         data = promotion.to_dict()
     return Response(response_json(True, data, None))
Exemplo n.º 24
0
 def get(self, request, format=None):
     feedback = Feedback.objects.all()
     serializer = FeedbackSerializer(feedback, many=True)
     return Response(response_json(True, serializer.data, None))