Esempio n. 1
0
// CreateProgram adds a new program into database
func CreateProgram(details map[string]interface{}) (adapter.WisplyError, error) {
	problems := adapter.WisplyError{}
	result := hasValidProgramModifyDetails(details)
	if !result.IsValid {
		problems.Data = result
		return problems, errors.New("Invalid details for the program")
	}
	fieldList := "`institution`, `title`, `code`, `year`, `ucas_code`, `level`, `content`, `subject`"
	questions := "?, ?, ?, ?, ?, ?, ?, ?"
	sql := "INSERT INTO `institution_program` (" + fieldList + ") VALUES (" + questions + ")"
	query, err := database.Connection.Prepare(sql)

	if err != nil {
		return problems, err
	}
	title := details["program-title"].(string)
	code := details["program-code"].(string)
	year := details["program-year"].(string)
	institution := details["program-institution"].(int)
	ucasCode := details["program-ucas-code"].(string)
	level := details["program-level"].(string)
	content := details["program-content"].(string)
	subject := details["program-subject"].(string)
	_, err = query.Exec(institution, title, code, year, ucasCode, level, content, subject)

	return problems, err
}
Esempio n. 2
0
// Try It tries to log in the username
func (login *Login) Try(loginDetails map[string]interface{}) (adapter.WisplyError, error) {

	deleteOldTokens()

	thinkMessage := "We think the email or the password were not valid."
	genericMessage := "There was a problem while login. " + thinkMessage

	problem := adapter.WisplyError{}
	result := isValidLogin(loginDetails)
	if !result.IsValid {
		problem.Data = result
		fmt.Println(result.Errors)
		return problem, errors.New("Error")
	}

	email := loginDetails["email"].(string)

	account, err := GetAccountByEmail(email)
	if err != nil {
		problem.Message = genericMessage
		return problem, errors.New(genericMessage)
	}

	passwordString := loginDetails["password"].(string)
	validPassword := checkPasswordIsCorrect(account.Password, passwordString)

	if !validPassword {
		problem.Message = genericMessage
		return problem, errors.New(genericMessage)
	}

	return problem, nil
}
Esempio n. 3
0
// InsertNewInstitution tries to create a new institution
func InsertNewInstitution(institutionDetails map[string]interface{}) (adapter.WisplyError, error) {

	problem := adapter.WisplyError{}

	result := hasValidInstitutionInsertDetails(institutionDetails)
	if !result.IsValid {
		problem.Data = result
		return problem, errors.New("Error")
	}

	name := institutionDetails["name"].(string)
	description := institutionDetails["description"].(string)
	url := institutionDetails["url"].(string)
	logoURL := institutionDetails["logoURL"].(string)
	wikiURL := institutionDetails["wikiURL"].(string)
	wikiID := institutionDetails["wikiID"].(string)

	sql := "INSERT INTO `institution` (`name`, `description`, `url`, `logo_URL`, `wiki_URL`, `wiki_ID`) VALUES (?, ?, ?, ?, ?, ?)"
	query, err := database.Connection.Prepare(sql)
	query.Exec(name, description, url, logoURL, wikiURL, wikiID)

	if err != nil {
		problem.Message = "No institution like that"
		return problem, errors.New("Error")
	}

	return problem, nil
}
Esempio n. 4
0
// InsertNewRepository tries to create a new repository
func InsertNewRepository(repositoryDetails map[string]interface{}) (adapter.WisplyError, error) {

	problem := adapter.WisplyError{}

	// check Institution

	_, errInst := NewInstitution(repositoryDetails["institution"].(string))

	if errInst != nil {
		problem.Message = "This institution does not exist"
		return problem, errors.New("Error")
	}

	result := hasValidInsertDetails(repositoryDetails)
	if !result.IsValid {
		problem.Data = result
		return problem, errors.New("Error")
	}

	name := repositoryDetails["name"].(string)
	description := repositoryDetails["description"].(string)
	url := repositoryDetails["url"].(string)
	institutionID := repositoryDetails["institution"].(string)
	category := repositoryDetails["category"].(string)
	publicURL := repositoryDetails["public-url"].(string)
	sql := "INSERT INTO `repository` (`name`, `description`, `url`, `institution`, `category`, `public_url`) VALUES (?, ?, ?, ?, ?, ?)"
	query, err := database.Connection.Prepare(sql)
	query.Exec(name, description, url, institutionID, category, publicURL)
	if err != nil {
		problem.Message = "No repository like that"
		return problem, errors.New("Error")
	}

	return problem, nil
}
Esempio n. 5
0
// DisplayError shows a complex error message
// (ussually after the validation of fields)
func (controller *Message) DisplayError(err adapter.WisplyError) {
	content := err.GetMessage()
	if err.Data != nil {
		language := beego.AppConfig.String("language")
		controller.Data["validationFailed"] = true
		controller.Data["validationErrors"] = err.Data.TranslateTo(language)
	}
	controller.displayMessage("error", content)
}
Esempio n. 6
0
// Modify changes the details of the institution
func (institution *Institution) Modify(institutionDetails map[string]interface{}) (adapter.WisplyError, error) {
	var problem = adapter.WisplyError{}
	result := hasValidInstitutionModifyDetails(institutionDetails)
	if !result.IsValid {
		problem.Data = result
		return problem, errors.New("It does not have valid details")
	}
	err := institution.updateInstitutionInDatabase(institutionDetails)
	return problem, err
}
Esempio n. 7
0
// Modify changes the details of the repository
func (repository *Repository) Modify(repositoryDetails map[string]interface{}) (adapter.WisplyError, error) {
	var problem = adapter.WisplyError{}
	result := hasValidProgramModifyDetails(repositoryDetails)
	if !result.IsValid {
		problem.Data = result
		return problem, errors.New("It does not have valid details")
	}
	err := repository.updateDatabase(repositoryDetails)
	return problem, err
}
Esempio n. 8
0
// Try It tries to create a new account
func (register *Register) Try(userDetails map[string]interface{}) (adapter.WisplyError, error) {
	var problem = adapter.WisplyError{}

	result := isValidRegister(userDetails)
	if !result.IsValid {
		problem.Data = result
		return problem, errors.New("Error")
	}

	email := userDetails["email"].(string)
	emailUsed := register.checkEmailExists(email)
	if emailUsed {
		problem.Message = "Hmmm, the email " + email + " is already used."
		return problem, errors.New("Error")
	}

	register.createNewAccount(userDetails)

	return problem, nil
}
Esempio n. 9
0
// Modify changes the details of the module
func (module Module) Modify(details map[string]interface{}) (adapter.WisplyError, error) {
	problems := adapter.WisplyError{}
	result := hasValidModuleModifyDetails(details)
	if !result.IsValid {
		problems.Data = result
		return problems, errors.New("Problem with the fields")
	}
	setClause := "SET `title`=?, `content`=?, `code`=?, `credits`=?, `year`=?"
	whereClause := "WHERE `id`= ?"
	sql := "UPDATE `institution_module` " + setClause + " " + whereClause
	query, err := database.Connection.Prepare(sql)
	if err != nil {
		fmt.Println(err)
	}
	title := details["module-title"].(string)
	content := details["module-content"].(string)
	code := details["module-code"].(string)
	credits := details["module-credits"].(string)
	year := details["module-year"].(string)
	query.Exec(title, content, code, credits, year, module.id)
	return problems, err
}
Esempio n. 10
0
// CreateModule adds a new module into database
func CreateModule(details map[string]interface{}) (adapter.WisplyError, error) {
	problems := adapter.WisplyError{}
	result := hasValidModuleModifyDetails(details)
	if !result.IsValid {
		problems.Data = result
		return problems, errors.New("Invalid details for the module")
	}
	fieldList := "`title`, `content`, `code`, `credits`, `year`, `institution`"
	questions := "?, ?, ?, ?, ?, ?"
	sql := "INSERT INTO `institution_module` (" + fieldList + ") VALUES (" + questions + ")"
	query, err := database.Connection.Prepare(sql)

	if err != nil {
		return problems, err
	}
	title := details["module-title"].(string)
	content := details["module-content"].(string)
	code := details["module-code"].(string)
	credits := details["module-credits"].(string)
	year := details["module-year"].(string)
	institution := details["module-institution"].(int)
	_, err = query.Exec(title, content, code, credits, year, institution)
	return problems, err
}
Esempio n. 11
0
// Modify changes the details of the program
func (program Program) Modify(details map[string]interface{}) (adapter.WisplyError, error) {
	problems := adapter.WisplyError{}
	result := hasValidProgramModifyDetails(details)
	if !result.IsValid {
		problems.Data = result
		return problems, errors.New("Problem with the fields")
	}
	setClause := "SET `title`=?, `code`=?, `year`=?, `ucas_code`=?, `level`=?, `content`=?, `subject`=? "
	whereClause := "WHERE `id`= ?"
	sql := "UPDATE `institution_program` " + setClause + " " + whereClause
	query, err := database.Connection.Prepare(sql)
	if err != nil {
		fmt.Println(err)
	}
	title := details["program-title"].(string)
	code := details["program-code"].(string)
	year := details["program-year"].(string)
	ucasCode := details["program-ucas-code"].(string)
	level := details["program-level"].(string)
	content := details["program-content"].(string)
	subject := details["program-subject"].(string)
	query.Exec(title, code, year, ucasCode, level, content, subject, program.id)
	return problems, err
}