Ejemplo n.º 1
0
 public TaskEditForm(int rowIndex, ProjectHours task, string projectName, Employee employee)
 {
     InitializeComponent();
     this.rowIndex    = rowIndex;
     this.task        = task;
     this.projectName = projectName;
     this.employee    = employee;
     this.db          = new TimeTableContext();
     this.project     = this.db.Projects.Include(p => p.ProjectMonths).First(p => p.ProjectName == projectName);
 }
Ejemplo n.º 2
0
        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            var senderGrid = (DataGridView)sender;

            if (senderGrid.Columns[e.ColumnIndex] is DataGridViewButtonColumn && e.RowIndex >= 0 && e.RowIndex < this.tasks.Count)
            {
                if (e.ColumnIndex == 4)
                {
                    ProjectHours task         = this.tasks[e.RowIndex];
                    TaskEditForm taskEditForm = new TaskEditForm(e.RowIndex, task, this.projectName, this.employee);
                    taskEditForm.EditEventHandler += TaskEditForm_EditEventHandler;
                    taskEditForm.Show();
                }
                else if (e.ColumnIndex == 5)
                {
                    Project project = this.db.Projects.Include(p => p.ProjectMonths).First(p => p.ProjectName == this.projectName);
                    if (project.ProjectStatus == "C")
                    {
                        MessageBox.Show($"The project is finished!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }

                    ProjectHours task = this.tasks[e.RowIndex];
                    if (project.ProjectMonths.Any(pm => pm.ProjectMonth == task.ProjectTaskdate.Month && pm.ProjectYear == task.ProjectTaskdate.Year))
                    {
                        ProjectMonths projectMonth = project.ProjectMonths
                                                     .First(pm => pm.ProjectMonth == task.ProjectTaskdate.Month && pm.ProjectYear == task.ProjectTaskdate.Year);
                        if (projectMonth.ProjectMonthStatus == "C")
                        {
                            MessageBox.Show("This month is finished for the project!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            return;
                        }
                    }

                    DialogResult result = MessageBox.Show("Are you sure you want to delete this task ?", "Delete Task", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (result == DialogResult.Yes)
                    {
                        var args = new DeleteEventArgs()
                        {
                            Task = task
                        };

                        DeleteEventHandler?.Invoke(this, args);
                        dataGridView1.Rows.RemoveAt(e.RowIndex);

                        MessageBox.Show(
                            $"Task was successfully deleted from {this.projectName}!",
                            "Successful Task Deletion",
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Information
                            );
                    }
                }
            }
        }
Ejemplo n.º 3
0
        private void addTaskBtn_Click(object sender, EventArgs e)
        {
            int      taskHours   = 0;
            string   projectName = projectComboBox.Text;
            string   task        = taskTextBox.Text;
            DateTime taskDate    = taskDateTimePicker.Value;

            Project project = this.db.Projects.Include(p => p.ProjectMonths).First(p => p.ProjectName == projectName);

            if (project.ProjectStatus == "C")
            {
                MessageBox.Show($"Tasks cannot be added to finished project!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            decimal employeeMaxWorkingHoursOnProject = project.ProjectMaxhours != null
            ? (decimal)project.ProjectMaxhours
            : (decimal)int.MaxValue;
            decimal employeeCurrentWorkingHoursOnProject = this.employee.ProjectHours.Where(ph => ph.ProjectId == project.ProjectId).Sum(ph => ph.ProjectHours1);

            if (IsValidTask(task) &&
                IsValidHours(ref taskHours, employeeCurrentWorkingHoursOnProject, employeeMaxWorkingHoursOnProject) &&
                IsValidDate(taskDate, project, employee))
            {
                var projectTask = new ProjectHours()
                {
                    ProjectTask     = task,
                    ProjectHours1   = taskHours,
                    ProjectTaskdate = taskDate
                };

                var args = new RegisterEventArgs()
                {
                    ProjectName = projectName,
                    ProjectTask = projectTask
                };

                RegisterEventHandler?.Invoke(this, args);
                this.Close();
            }
        }