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();

            }
        }