Exemple #1
0
 def get(self):
     user = UserModel.find_by_username(email=get_jwt_identity())
     results = []
     company = CompanyModel.find_by_id(id=user.id_company)
     items = SurveyCompanyModel.find_by_company_id(
         id_company=user.id_company)
     if (len(items) == 0):
         return {'data': []}
     else:
         #return jsonify(json_list = questions)
         for item in items:
             results.append({
                 "id":
                 item.id,
                 "id_survey":
                 item.id_survey,
                 "name_survey":
                 item.name_survey,
                 "id_company":
                 item.id_company,
                 "status":
                 item.status,
                 "score":
                 item.score,
                 "last_modified":
                 item.last_date.strftime('%m/%d/%Y %H:%M'),
                 "version":
                 item.version
             })
         return results
Exemple #2
0
    def get(self):

        user = UserModel.find_by_username(email=get_jwt_identity())
        results = []
        company = CompanyModel.find_by_id(id=user.id_company)
        if (company == None):
            return {'data': []}
        else:
            #return jsonify(json_list = questions)
            return {
                "id": company.id,
                "sector": company.sector,
                "subsector": company.subsector,
                "commercial_name": company.commercial_name,
                "fiscal_name": company.fiscal_name,
                "nif": company.nif,
                "number_survey": company.number_survey,
                "duplication_survey": company.duplication_survey,
                "name_surname": company.name_surname,
                "telephone_number": company.telephone_number,
                "description": company.description,
                "comarca": company.comarca,
                "territori_leader": company.territori_leader,
                "number_workers": company.number_workers
            }
Exemple #3
0
    def get(cls, id):

        company = CompanyModel.find_by_id(id)

        if company:
            return {"company": company_schema.dump(company)}

        return {"message": "not found"}, 404
Exemple #4
0
    def delete(cls, id):

        company = CompanyModel.find_by_id(id)

        if company:
            company.delete_from_db()

            return {"message": "Compnay deleted!"}

        return {"message": "not found"}, 404
Exemple #5
0
    def post(self):
        parser = reqparse.RequestParser()
        parser.add_argument('id_survey',
                            help='This field cannot be blank',
                            required=True)
        parser.add_argument('id_company',
                            help='This field cannot be blank',
                            required=True)
        parser.add_argument('file_dari',
                            help='This field cannot be blank',
                            required=False)

        data = parser.parse_args()

        items = SurveyCompanyModel.find_by_company_id(
            id_company=data['id_company'])
        company = CompanyModel.find_by_id(id=data['id_company'])
        version = len(items) + 1
        new_surveycompany = SurveyCompanyModel(
            id_survey=data['id_survey'],
            name_survey=company.commercial_name + ".v" + str(version),
            id_company=data['id_company'],
            version=version,
            status='created',
            start_date=datetime.utcnow(),
            last_date=datetime.utcnow(),
            score=0,
            file_dari=data['file_dari'])
        try:
            survey = SurveyModel.find_by_id(id=data['id_survey'])
            questions = [int(s) for s in survey.questions.split(',')]
            answers_id = []
            for question in questions:
                answer = AnswerModel(id_question=question,
                                     score=-1,
                                     future=False,
                                     id_option=-1,
                                     justification_text='',
                                     justification_file='')
                answer.save_to_db()
                answers_id.append(answer.id)
            new_surveycompany.answers = ','.join([str(i) for i in answers_id])

            new_surveycompany.save_to_db()
            return {
                'message':
                'Survey company ' + str(new_surveycompany.id) + ' was created'
            }
        except Exception as e:
            print(e)
            return {'message': 'Something went wrong ' + str(e)}, 500
Exemple #6
0
    def get(self):
        user = UserModel.find_by_username(email=get_jwt_identity())
        company = CompanyModel.find_by_id(id=user.id_company)

        results = []
        survey = SurveyModel.find_by_sector(company.sector, company.subsector)
        if (survey == None):
            return {'data': []}
        else:
            #return jsonify(json_list = questions)
            return {
                "id": survey.id,
                "sector": survey.sector,
                "subsector": survey.subsector,
                "questions": survey.questions
            }
Exemple #7
0
    def put(cls, id):

        company_json = request.get_json()["company"]
        users_json = company_json["users"]
        company = CompanyModel.find_by_id(id)

        if company:

            # validate company
            if company_json.get("name") != company.name or company_json.get(
                    "email") != company.email:
                if CompanyModel.find_by_name_or_email(
                        company_json.get("name"), company_json.get("email")):
                    return {
                        "message": "Company name or email already exists"
                    }, 400

            # delete users
            new_users = []
            for user in company.users:
                exists_user = next(
                    filter(lambda usr: usr.get("id") == user.id, users_json),
                    None)

                if exists_user:
                    new_users.append(user)

            company.users = new_users

            # validates usernames and emails
            for new_user in users_json:

                current_user = next(
                    filter(lambda usr: usr.id and usr.id == new_user.get("id"),
                           company.users), None)

                # if the user already exists
                if current_user:

                    if current_user.username != new_user.get("username"):
                        if UserModel.find_by_username(
                                new_user.get("username")):
                            return {
                                "message": "Username or email already exists11"
                            }, 400

                    if current_user.email != new_user.get("email"):
                        if UserModel.find_by_email(new_user.get("email")):
                            return {
                                "message": "Username or email already exists11"
                            }, 400

                    current_user.username = new_user["username"]
                    current_user.email = new_user["email"]
                    current_user.role_id = new_user["role_id"]

                    if new_user.get("password"):
                        hashed_password = custom_pbkdf2.hash(
                            new_user.get("password"))
                        current_user.password = hashed_password

                # if the user is new
                else:

                    if UserModel.find_by_username_or_email(
                            new_user.get("username"), new_user.get("email")):
                        return {
                            "message": "Username or email already exists22"
                        }, 400

                    hashed_password = custom_pbkdf2.hash(new_user["password"])
                    new_user["password"] = hashed_password

                    user_to_add = user_schema.load(new_user)
                    company.users.append(user_to_add)

            company.name = company_json.get("name")
            company.email = company_json.get("email")
            company.mobile_number = company_json.get("mobile_number")
            company.address = company_json.get("address")

            company.save_to_db()

            for user in company.users:
                if not user.profile_config:
                    user_setting = user_setting_schema.load(
                        {"user_id": user.id})
                    user_setting.save_to_db()

            return {
                "message": "Company updated",
                "company": company_schema.dump(company)
            }

        return {"message": "not found"}, 404