private void ButtonDashboard_Click(object sender, RoutedEventArgs e) { TextblockPanelName.Text = "Dashboard"; RoleCache.GetInstance().Clear(); EmployeeCache.GetInstance().Clear(); ResourceCache.GetInstance().Clear(); CustomerCache.GetInstance().Clear(); ProcessCache.GetInstance().Clear(); ProjectCache.GetInstance().Clear(); List <Resource> recs = ResourceCache.GetInstance().Resources; recs = ResourceCache.GetInstance().UpdateAllQSizes(); recs = recs.OrderByDescending(r => r.QSize).ToList <Resource>(); var emps = EmployeeCache.GetInstance().Employees; emps = EmployeeCache.GetInstance().UpdateAllQSizes(); emps = emps.OrderByDescending(e => e.QSize).ToList <Employee>(); DataContext = new DashboardViewModel { Resources = new ObservableCollection <Resource>(recs), SelectedResource = recs[0], Employees = new ObservableCollection <Employee>(emps), SelectedEmployee = emps[0] }; }
private void ProjectViewNewProjectClickHandler(ProjectsViewModel viewModel) { TextblockPanelName.Text = "Create New Project"; RoleCache.GetInstance().Clear(); EmployeeCache.GetInstance().Clear(); ResourceCache.GetInstance().Clear(); CustomerCache.GetInstance().Clear(); ProcessCache.GetInstance().Clear(); ProjectCache.GetInstance().Clear(); var resources = ResourceCache.GetInstance().Resources; resources = ResourceCache.GetInstance().UpdateAllQSizes(); DataContext = new AddEditProjectViewModel { Project = new Project { Id = 0, Processes = new List <Process>(), StartDate = DateTimeOffset.UtcNow, PoDate = DateTimeOffset.UtcNow, Quantity = 1, OrderStatus = Project.ProjectOrderStatus.WaitingQuote, }, BackClickedHandler = AddEditProjectViewBackClickHandler, Customers = CustomerCache.GetInstance().Customers, Processes = new ObservableCollection <Process>(new List <Process>()), Resources = resources.OrderByDescending(r => r.QSize).ToList <Resource>(), Employees = EmployeeCache.GetInstance().Employees }; }
private void EmployeeSaveClickeHandler() { foreach (var process in ProcessCache.GetInstance().GetByEmployeeId(SelectedEmployee?.Id ?? 0)) { ProcessCache.GetInstance().Update(process); } CommonFunctions.UpdateQs(); ResourceCache.GetInstance().UpdateAllQSizes(); EmployeeCache.GetInstance().UpdateAllQSizes(); Refresh(); }
//private void UpdateQs() //{ // //Set Q No. TO 0 if the process is completed // foreach (var process in ProcessCache.GetInstance().Processes) // { // var q = ProcessQCache.GetInstance().GetByProcess(process); // if(q == null) // { // //if no q entry, make a new entry. // q = ProcessQCache.GetInstance().Insert(new ProcessQ // { // ProcessId = process.Id, // QNumber = 0 // }); // } // if (process.Status == Process.ProcessStatus.Completed) // { // q.QNumber = 0; // ProcessQCache.GetInstance().Update(q); // } // } // //For each resource, // foreach (var resource in ResourceCache.GetInstance().Resources) // { // //get incomplete processes... // var incompleteProcs = ProcessCache.GetInstance().GetByResourceId(resource.Id).FindAll(p => p.Status != Process.ProcessStatus.Completed).ToList<Process>(); // //order them ascending order of existing q numbers... if a ProcessQ isn't available, temporarily assign it a large value so that they get to the end of the q in next step // var procsInQueueOrder = incompleteProcs.OrderBy(p => ProcessQCache.GetInstance().GetByProcess(p)?.QNumber ?? long.MaxValue); // long index = 0; // foreach (var process in procsInQueueOrder) // { // index++; // var q = ProcessQCache.GetInstance().GetByProcess(process); // if (q != null) // { // q.QNumber = index; // ProcessQCache.GetInstance().Update(q); // } // else if (q == null) // { // ProcessQCache.GetInstance().Insert( // new ProcessQ // { // ProcessId = process.Id, // QNumber = index // }); // } // } // } //} private void DeleteProcessClickHandler() { //delete q number of this process first.. ProcessQCache.GetInstance().Delete(ProcessQCache.GetInstance().GetByProcess(SelectedProcess)); //now delete the process. ProcessCache.GetInstance().Delete(SelectedProcess); Processes.Remove(SelectedProcess); //Run the Q update logic now.. CommonFunctions.UpdateQs(); Resources = ResourceCache.GetInstance().UpdateAllQSizes(); }
public static void UpdateQs() { //Set Q No. TO 0 if the process is completed foreach (var process in ProcessCache.GetInstance().Processes) { var q = ProcessQCache.GetInstance().GetByProcess(process); if (q == null) { //if no q entry, make a new entry. q = ProcessQCache.GetInstance().Insert(new ProcessQ { ProcessId = process.Id, QNumber = 0 }); } if (process.Status == Process.ProcessStatus.Completed) { q.QNumber = 0; ProcessQCache.GetInstance().Update(q); } } //For each resource, foreach (var resource in ResourceCache.GetInstance().Resources) { //get incomplete processes... var incompleteProcs = ProcessCache.GetInstance().GetByResourceId(resource.Id).FindAll(p => p.Status != Process.ProcessStatus.Completed).ToList <Process>(); //order them ascending order of existing q numbers... if a ProcessQ isn't available, temporarily assign it a large value so that they get to the end of the q in next step var procsInQueueOrder = incompleteProcs.OrderBy(p => ProcessQCache.GetInstance().GetByProcess(p)?.QNumber ?? long.MaxValue); long index = 0; foreach (var process in procsInQueueOrder) { index++; var q = ProcessQCache.GetInstance().GetByProcess(process); if (q != null) { q.QNumber = index; ProcessQCache.GetInstance().Update(q); } else if (q == null) { ProcessQCache.GetInstance().Insert( new ProcessQ { ProcessId = process.Id, QNumber = index }); } } } }
internal void Refresh() { var projectId = Project?.Id; EmployeeCache.GetInstance().Clear(); ResourceCache.GetInstance().Clear(); ProcessCache.GetInstance().Clear(); ProjectCache.GetInstance().Clear(); Resources = ResourceCache.GetInstance().Resources; Resources = ResourceCache.GetInstance().UpdateAllQSizes(); Employees = EmployeeCache.GetInstance().Employees; if (projectId.Value > 0) { Project = ProjectCache.GetInstance().GetById(projectId.Value); Processes = new ObservableCollection <Process>(Project.Processes); } }
private void ProjectViewOpenProectClickHandler(ProjectsViewModel viewModel) { TextblockPanelName.Text = "Project Details"; RoleCache.GetInstance().Clear(); EmployeeCache.GetInstance().Clear(); ResourceCache.GetInstance().Clear(); CustomerCache.GetInstance().Clear(); ProcessCache.GetInstance().Clear(); ProjectCache.GetInstance().Clear(); var resources = ResourceCache.GetInstance().Resources; resources = ResourceCache.GetInstance().UpdateAllQSizes(); DataContext = new AddEditProjectViewModel { Project = viewModel.SelectedProject, BackClickedHandler = AddEditProjectViewBackClickHandler, Customers = CustomerCache.GetInstance().Customers, Processes = new ObservableCollection <Process>(viewModel.SelectedProject.Processes), Resources = resources.OrderByDescending(r => r.QSize).ToList <Resource>(), Employees = EmployeeCache.GetInstance().Employees }; }
private void SaveClickHandler() { try { if (Project?.Customer == null) { MessageBox.Show("Please select a customer!", "Incomplete Data", MessageBoxButton.OK, MessageBoxImage.Exclamation); return; } if (!DeadlineDisplay.HasValue) { MessageBox.Show("Please enter a deadline date for this project!", "Incomplete Data", MessageBoxButton.OK, MessageBoxImage.Exclamation); return; } foreach (var process in Processes) { if (!double.TryParse(process.DurationHours, out double result)) { MessageBox.Show("Enter a valid duration for the process " + process.Name, "Incomplete Data", MessageBoxButton.OK, MessageBoxImage.Exclamation); return; } if (process.ExecutingEmployee == null) { MessageBox.Show("Select an employee for the process " + process.Name, "Incomplete Data", MessageBoxButton.OK, MessageBoxImage.Exclamation); return; } if (process.ExecutingResource == null) { MessageBox.Show("Select a resource for the process " + process.Name, "Incomplete Data", MessageBoxButton.OK, MessageBoxImage.Exclamation); return; } } if (Project.Id == 0) { Project = ProjectCache.GetInstance().Insert(Project); } else { ProjectCache.GetInstance().Update(Project); } var projectId = Project.Id; foreach (var process in Processes) { process.ProjectId = projectId; if (process.Id == 0) { _ = ProcessCache.GetInstance().Insert(process); } else { ProcessCache.GetInstance().Update(process); } } CommonFunctions.UpdateQs(); BackClickedHandler?.Invoke(this); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error); } }