internal static void AddProperties(string[] properties, Project project, bool visible, bool important, String author) { ProjectPropertiesEntities db = new ProjectPropertiesEntities(); if (db.Connection.State != System.Data.ConnectionState.Open) { db.Connection.Open(); } try { foreach (String property in properties) { Value toAdd = Value.CreateValue(property, project.Id, visible, important, author); if (toAdd == null) { throw new IllegalDBOperationException(project); } else { db.AddToValues(toAdd); } } db.SaveChanges(); } catch(IllegalDBOperationException e) { throw e; } catch (Exception e) { throw new ConnectionException(e); } finally { } }
/// <summary> /// Creates project with specified owner, time of creation and properties that predefined in Validation settings /// </summary> /// <param name="owner"></param> /// <param name="dateTime"></param> internal static int CreateProject(string owner) { ProjectPropertiesEntities db = new ProjectPropertiesEntities(); if (db.Connection.State != System.Data.ConnectionState.Open) { db.Connection.Open(); } try { Project project = Project.CreateProject(DateTime.Now, null); DbTransaction transaction = db.Connection.BeginTransaction(); try { db.AddToProjects(project); db.SaveChanges(); IEnumerable<String> defaultPropertiesNames = DBDefinitionsHelper.GetDefaultProperties(); foreach (String name in defaultPropertiesNames) { Value defaultProperty = Value.CreateValue(name, project.Id, true, true, owner); if (name == "project_url") { defaultProperty.Value1 = DBDefinitionsHelper.GetProjectUrl(project.Id); defaultProperty.Visible = false; } else if (name == "name") { defaultProperty.Value1 = DBDefinitionsHelper.GetDefaultProjectName(); } else if (name == "owner") { defaultProperty.Value1 = owner; } db.AddToValues(defaultProperty); } db.SaveChanges(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); throw e; } return project.Id; } catch(InvalidOperationException e) { throw new IllegalDBOperationException(e); } catch (Exception e) { throw new ConnectionException(e); } finally { db.Connection.Close(); } }