/// <summary> /// Add the institution. /// </summary> /// <param name="sender">The sender of the events</param> /// <param name="e">The args of the event</param> protected void AddButton_Click(object sender, EventArgs e) { Extensions.SqlOperation operation = () => { var institutionsDAO = new InstitutionsDAO(); var departments = (from ListItem department in DepartmentList.Items select new Department {Name = department.Text}).ToList(); //Intantiate institution var language = new Language { Name = LanguageList.SelectedValue }; var continent = new Continent { Name = ContinentList.SelectedValue }; var country = new Country { Name = CountryList.SelectedValue, Continent = continent }; var institution = new Institution(-1, NameText.Text, DescriptionText.Text, CityText.Text, InterestText.Text, language, country, departments, false); var institutionId = institutionsDAO.AddInstitution(institution); Response.Redirect("ShowInstitution.aspx?institution=" + institutionId); }; this.Verified(operation, ErrorLabel); }
/// <summary> /// Adds an insitution to the database. /// </summary> /// <param name="institution">Institution to be added.</param> /// <returns>The institutin's ID automatically generated by the database.</returns> public int AddInstitution(Institution institution) { Logger.Debug("Creating institution in database"); var parametersInstitution = new NameValueCollection { {"@name", institution.Name}, {"@description", institution.Description}, {"@city", institution.City}, {"@interest", institution.Interest}, {"@languageName", institution.Language.Name}, {"@countryName", institution.Country.Name}, {"@archived", "0"} }; using(var connection = DBManager.GetInstance().GetNewConnection()) { var transaction = connection.BeginTransaction(IsolationLevel.ReadCommitted); //Insert institution var institutionId = DBUtils.ExecuteInsert( "INSERT INTO [Institution] (name,description,city,interest,languageName,countryName,archived) VALUES (@name,@description,@city,@interest,@languageName,@countryName,@archived)", parametersInstitution, "Institution", transaction); //Insert departments foreach (var department in institution.Departments) { var parametersDepartment = new NameValueCollection { {"@name", department.Name}, {"@institutionId", institutionId.ToString()}, {"@archived", "0"} }; DBUtils.ExecuteInsert( "INSERT INTO [Department] (name,institutionId,archived) VALUES (@name,@institutionId,@archived)", parametersDepartment, "Department", transaction); } transaction.Commit(); Logger.Debug("Created institution with id {0} in database", institutionId); return institutionId; } }
/// <summary> /// Save the changes. /// </summary> /// <param name="sender">The sender of the events</param> /// <param name="e">The args of the event</param> protected void EditButton_Click(object sender, EventArgs e) { Extensions.SqlOperation operation = () => { var tr = (int) ViewState["transaction"]; var transaction = (SqlTransaction) Session["transaction" + tr]; var connection = (SqlConnection) Session["connection" + tr]; var institutionId = Request.QueryString["institution"].ToInt(); var institutionsDAO = new InstitutionsDAO(); //Instantiate and fill department list var departments = (from ListItem department in DepartmentList.Items select new Department {Name = department.Text}).ToList(); //Intantiate institution var language = new Language { Name = LanguageList.SelectedValue }; var continent = new Continent { Name = ContinentList.SelectedValue }; var country = new Country { Name = CountryList.SelectedValue, Continent = continent }; var institution = new Institution(institutionId, NameText.Text, DescriptionText.Text, CityText.Text, InterestText.Text, language, country, departments, false); institutionsDAO.UpdateInstitution(institution, transaction); transaction.Commit(); connection.Close(); Response.Redirect("ShowInstitution.aspx?institution=" + institutionId); }; this.Verified(operation, ErrorLabel); }
/// <summary> /// Updates information about an institution (in database). /// </summary> /// <param name="institution">Represents the institution to be updated.</param> /// <param name="transaction">Transactin to be used.</param> public void UpdateInstitution(Institution institution, SqlTransaction transaction) { NameValueCollection parameters; var oldDepartments = GetDepartments(institution.Id, transaction); //Department already present in DB Logger.Debug("Archiving old departments of institution with id {0} in database", institution.Id); //Delete all the old departments foreach(var oldDepartment in oldDepartments) { if (!institution.Departments.ContainsDepartmentWithName(oldDepartment.Name)) { ArchiveDepartment(oldDepartment.Id, transaction); } } Logger.Debug("Archived old departments of institution with id {0} in database", institution.Id); Logger.Debug("Adding new departments of institution with id {0} into database", institution.Id); //Add all the new departments foreach(var department in institution.Departments) { if (!oldDepartments.ContainsDepartmentWithName(department.Name)) { parameters = new NameValueCollection { {"@name", department.Name}, {"@institutionId", institution.Id.ToString()}, {"@archived", "0"} }; DBUtils.ExecuteNonQuery( "INSERT INTO [Department] (name,institutionId,archived) VALUES (@name,@institutionId,@archived)", transaction, parameters); } } Logger.Debug("Added new departments of institution with id {0} into database", institution.Id); //Update institution data parameters = new NameValueCollection { {"@institutionId", institution.Id.ToString()}, {"@name", institution.Name}, {"@description", institution.Description}, {"@city", institution.City}, {"@interest", institution.Interest}, {"@languageName", institution.Language.Name}, {"@countryName", institution.Country.Name}, {"@archived", "0"} }; Logger.Debug("Updating information of institution with id {0} in database", institution.Id); DBUtils.ExecuteNonQuery( "UPDATE [Institution] SET name = @name, description = @description, city = @city, interest = @interest, languageName = @languageName, countryName = @countryName WHERE id = @institutionId", transaction, parameters); Logger.Debug("Updated information of institution with id {0} in database", institution.Id); }