public void create(ProjectInfo data) { string ifErrorDelete = null ; try { if(_startDate == null) _startDate = DateTime.Now.ToShortDateString(); _root += @"\" + data.projectTypeName + @"\" + data.clientName + @"\"; ifErrorDelete = _root; Directory.CreateDirectory(_root); _root += _startDate + "_" + data.requestTypeName + "_" + data.projectName + @"\"; data.path = _root; Directory.CreateDirectory(_root); string tenders = _root + "Tender task_" + _startDate + "_" + data.requestTypeName + "_" + data.projectName; Directory.CreateDirectory(tenders); Directory.CreateDirectory(_root + "Calculation_" + _startDate + "_" + data.requestTypeName + "_" + data.projectName); Directory.CreateDirectory(_root + "Offers_" + _startDate + "_" + data.requestTypeName + "_" + data.projectName); Directory.CreateDirectory(_root + "Validation_" + _startDate + "_" + data.requestTypeName + "_" + data.projectName); foreach(string file in _files) { File.Copy(AppDomain.CurrentDomain.BaseDirectory + @"temp\" + file, tenders + @"\" + file, true); } dbManager.createProject(data); System.Diagnostics.Process.Start(_root); _root = _defaultRoot; } catch(SystemException ex) { this.close(); System.Windows.Forms.MessageBox.Show(ex.Message); if(ifErrorDelete != null) Directory.Delete(ifErrorDelete, true); _root = _defaultRoot; throw ex; } }
public CreatorEvent(ProjectInfo data) { _data = data; }
private void createButton_Click(object sender, EventArgs e) { bool isEmpty = true; foreach(ComboBox box in participantBoxes) { if((int)box.SelectedValue != -1) { isEmpty = false; break; } } if(isEmpty) { MessageBox.Show("Specify at least one participant"); return; } if(OnCreate != null) { if(clientBox.Text == "" || projectBox.Text == "" || typeBox.Text == "" || dateBox.Text == "" || requestBox.Text == null) { MessageBox.Show("Please, fill all text boxes."); return; } ProjectCreator.ProjectInfo info = new ProjectInfo(); if(clientBox.SelectedValue == null) info.clientId = -1; else { info.clientId = (int)clientBox.SelectedValue; } info.clientName = clientBox.Text; info.projectId = Int32.Parse(projectIdBox.Text); info.projectName = projectBox.Text; info.projectStartDate = startDateBox.Text; info.letterDate = dateBox.Text; info.projectType = (int)typeBox.SelectedValue; info.projectTypeName = typeBox.Text; info.requestType = (int)requestBox.SelectedValue; info.requestTypeName = requestBox.Text; info.participants = new List<int>(); info.deadline = DateTime.Parse(deadlineBox.Text).ToShortDateString(); foreach(ComboBox box in participantBoxes) { if((int)box.SelectedValue >= 0) { info.participants.Add((int)box.SelectedValue); } } if(isPlanBox.Checked) { info.stagesDate = new Dictionary<int, KeyValuePair<string, string>>(); for(int i = 0; i < stageBoxes.Count; i++) { if(dateFromBoxes[i].Checked == false) continue; info.stagesDate[i + 1] = new KeyValuePair<string, string>(DateTime.Parse(dateFromBoxes[i].Text).ToShortDateString(), DateTime.Parse(dateToBoxes[i].Text).ToShortDateString()); } } OnCreate(sender, new CreatorEvent(info)); } }
public void createProject(ProjectInfo info) { //cnn.Open(); int clientId = info.clientId; int projectId = info.projectId; string insertStatement; OleDbCommand insertCommand; OleDbTransaction transaction = cnn.BeginTransaction(); try { if(clientId == -1) { //!(new OleDbCommand("SELECT * FROM Clients WHERE id=" + clientId.ToString(), cnn).ExecuteReader().HasRows)) { insertStatement = "INSERT INTO Clients " + "(clientName) " + "VALUES (@clientName)"; insertCommand = new OleDbCommand(insertStatement, cnn); insertCommand.Transaction = transaction; //insertCommand.Parameters.Add("@id", OleDbType.Integer).Value = clientId; insertCommand.Parameters.Add("@clientName", OleDbType.Char).Value = info.clientName; insertCommand.ExecuteNonQuery(); insertCommand.CommandText = "Select @@Identity"; clientId = (int)insertCommand.ExecuteScalar(); } if(info.stagesDate != null) { foreach(int id in info.stagesDate.Keys) { insertStatement = "INSERT INTO Stages " + "(projectId, stageId, plannedStartDate, plannedEndDate, roundNumber)" + "VALUES (@projectId, @stageId, @plannedStartDate, @plannedEndDate, @roundNumber)"; insertCommand = new OleDbCommand(insertStatement, cnn); insertCommand.Transaction = transaction; insertCommand.Parameters.Add("@projectId", OleDbType.Integer).Value = projectId; insertCommand.Parameters.Add("@stageId", OleDbType.Integer).Value = id; insertCommand.Parameters.Add("@plannedStartDate", OleDbType.Date).Value = info.stagesDate[id].Key; insertCommand.Parameters.Add("@plannedEndDate", OleDbType.Date).Value = info.stagesDate[id].Value; insertCommand.Parameters.Add("@roundNumber", OleDbType.Integer).Value = 1; insertCommand.ExecuteNonQuery(); } } foreach(int player in info.participants) { insertStatement = "INSERT INTO ProjectParticipants " + "(projectId, participantId)" + "VALUES (@projectId, @participantId)"; insertCommand = new OleDbCommand(insertStatement, cnn); insertCommand.Transaction = transaction; insertCommand.Parameters.Add("@projectId", OleDbType.Integer).Value = projectId; insertCommand.Parameters.Add("@participantId", OleDbType.Integer).Value = player; insertCommand.ExecuteNonQuery(); } insertStatement = "INSERT INTO Projects " + "(id, projectName, currentStageId, responsibleId, projectType, requestType, clientId, isClosed, pathToFolder, deadline, startDate) " + "VALUES (@id, @projectName, @currentStageId, @responsibleId, @projectType, @requestType, @clientId, @isClosed, @pathToFolder, @deadline, @startDate)"; insertCommand = new OleDbCommand(insertStatement, cnn); insertCommand.Transaction = transaction; insertCommand.Parameters.Add("@id", OleDbType.Integer).Value = projectId; insertCommand.Parameters.Add("@projectName", OleDbType.Char).Value = info.projectName; insertCommand.Parameters.Add("@currentStageId", OleDbType.Integer).Value = 1; insertCommand.Parameters.Add("@responsibleId", OleDbType.Integer).Value = info.pilot; insertCommand.Parameters.Add("@projectType", OleDbType.Integer).Value = info.projectType; insertCommand.Parameters.Add("@requestType", OleDbType.Integer).Value = info.requestType; insertCommand.Parameters.Add("@clientId", OleDbType.Integer).Value = clientId; insertCommand.Parameters.Add("@isClosed", OleDbType.Integer).Value = 0; insertCommand.Parameters.Add("@pathToFolder", OleDbType.Char).Value = info.path; insertCommand.Parameters.Add("@deadline", OleDbType.Date).Value = info.deadline; insertCommand.Parameters.Add("@startDate", OleDbType.Date).Value = info.projectStartDate; insertCommand.ExecuteNonQuery(); transaction.Commit(); //cnn.Close(); } catch(SystemException e) { transaction.Rollback(); throw e; } }