def lower_salary_companies(request, responder): create_feedback_file('placement_info', request) year, *_ = extract_entities(request) salary = next((i['value'][0]['value'] for i in request.entities if i['type'] == 'sys_number'), None) responder.frame.pop('year', None) companies = qa.get(index='companies', size=100) count = 0 if year: for i in companies: if year in i['data']: if salary > i['data'][year]['salary']: count += 1 else: for i in companies: for k in i['data']: if salary > i['data'][k]['salary']: count += 1 break reply = "A total of %s " % (count) if count == 1: reply += "company" else: reply += "companies" reply += " gave a salary lower than %s lpa" % (salary) if year: reply += " in the year %s" % (year) responder.reply(reply)
def list_companies(request, responder): create_feedback_file('placement_info',request) asked_year = None for i in request.entities: if i['type'] == 'sys_time': asked_year = i['value'][0]['value'][0:4] break companies = qa.get(index='companies') if asked_year == None: company_names = [i['name'] for i in companies] else: responder.frame['year'] = asked_year company_names = [i['name'] for i in companies if asked_year in i['data']] if len(company_names) == 0: reply = "No companies came for placements" if asked_year != None: reply += " in " + asked_year else: reply = "The companies which came for placements" if asked_year != None: reply += " in " + asked_year reply += " are\n" + "\n".join(company_names) responder.reply(reply)
def handle_last_recruitment(company_name, responder): company = qa.get(index='companies', name=company_name)[0] last_recruitment_year = sorted(company['data'].keys())[-1] responder.frame['company_name'] = company_name responder.frame['year'] = last_recruitment_year reply = company_name + " last came for placements in " + last_recruitment_year responder.reply(reply)
def handle_salary(company_name, year, category, responder): company = qa.get(index='companies', name=company_name)[0] responder.frame['company_name'] = company_name responder.frame['desired_action'] = "%s_salary" % (category) if year: responder.frame['year'] = year if year in company['data']: salary = company['data'][year]['%s_sal' % (category)] reply = "%s gave a %s salary of %s in the year %s" % ( company_name, category, salary, year) responder.reply(reply) elif year: reply = company_name + " didn't came for placements in " + year responder.reply(reply) else: responder.reply("Of course, which year?") responder.listen()
def count_companies(request, responder): create_feedback_file('placement_info', request) year, *_ = extract_entities(request) responder.frame.pop('year', None) companies = qa.get(index='companies', size=100) count = 0 for i in companies: if year in i['data']: count += 1 reply = "A total of " if year != None: reply += "%s companies visited in %s." % (count, year) else: reply += "%s companies have visited till now." % (len(companies)) responder.reply(reply)
def handle_salary(company_name, year, responder): company = qa.get(index='companies', name=company_name)[0] responder.frame['company_name'] = company_name if year: responder.frame['year'] = year if year in company['data']: try: salary = company['data'][year]['salary'] reply = "%s gave a salary of %s lpa in the year %s" % ( company_name, salary, year) responder.reply(reply) except KeyError: responder.reply("Data Not available") elif year: reply = company_name + " didn't came for placements in " + year responder.reply(reply) else: responder.frame['desired_action'] = 'salary' responder.reply("Of course, which year?") responder.listen()
def handle_last_recruitment(company_name, category, responder): company = qa.get(index='companies', name=company_name)[0] if category: last_recruitment_year = next( (i for i in company['data'] if category in company['data'][i]), None) else: last_recruitment_year = sorted(company['data'].keys())[-1] responder.frame['company_name'] = company_name responder.frame['year'] = last_recruitment_year responder.frame['dept_name'] = category reply = company_name if last_recruitment_year: reply += " last came for placements in " + last_recruitment_year if category: reply += " for " + category elif category: reply += " didn't came for placements for " + category responder.reply(reply)
def handle_total_recruits(company_name, year, category, responder): company = qa.get(index='companies', name=company_name)[0] responder.frame['company_name'] = company_name if category != "all": responder.frame['dept_name'] = category if year: responder.frame['year'] = year if year in company['data']: recruits = 0 if category == 'all': for k in company['data'][year]: if k != 'salary': recruits += company['data'][year][k] else: try: recruits = company['data'][year][category] except KeyError: reply = "%s didn't recruit for %s dept in %s" % ( company_name, category, year) responder.reply(reply) return reply = "%s recruited total of %s students " % (company_name, recruits) if category != 'all': reply += "from %s " % (category) reply += "in the year %s" % (year) responder.reply(reply) elif year: reply = company_name + " didn't came for placements in " + year responder.reply(reply) else: responder.frame['desired_action'] = 'total_recruits' responder.reply("Of course, which year?") responder.listen()
def handle_companies_list(category, year, responder): companies = qa.get(index='companies', size=100) if year == None: company_names = [i['name'] for i in companies] else: company_names = [i['name'] for i in companies if year in i['data']] if year != None and category == "some": responder.frame['year'] = year elif category == "all": responder.frame.pop('year', None) if len(company_names) == 0: reply = "Data unavailable" else: reply = "The companies which came for placements" if year != None: reply += " in " + year if category == "all" or len(company_names) < 6: reply += " are\n" + "\n".join(company_names) elif len(company_names) > 5: reply += " are\n" + "\n".join(company_names[:5]) reply += "\nand %s more...." % (len(company_names) - 5) responder.reply(reply)