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 ButtonManageProjects_Click(object sender, RoutedEventArgs e)
 {
     TextblockPanelName.Text = "Manage Projects";
     DataContext             = new ProjectsViewModel
     {
         ProjectsToDisplay       = new ObservableCollection <Project>(ProjectCache.GetInstance().Projects),
         NewProjectClickHandler  = ProjectViewNewProjectClickHandler,
         ProjectOpenClickHandler = ProjectViewOpenProectClickHandler
     };
 }
Example #4
0
        /// <summary>
        /// Get project by name
        /// </summary>
        /// <param name="name">name of project</param>
        /// <returns>default project if empty string, new project object if new project name, existing project if already there</returns>
        public Project GetProject(string name)
        {
            Project project = ProjectCache.GetInstance().GetProjectByName(name);

            if (project == null)
            {
                project      = new Project();
                project.ID   = -1;
                project.Name = name;
            }
            return(project);
        }
Example #5
0
 public Project SyncProject(Project p)
 {
     if (ProjectCache.GetInstance().GetProjectById(p.ID) == null)
     {
         InsertNewProject(p);
     }
     else
     {
         ProjectCache.GetInstance().UpdateProject(p);
     }
     return(GetProject(p.Name));
 }
Example #6
0
 public List <Project> RetrieveAllProjects()
 {
     if (ProjectCache.GetInstance().GetProjectByName(string.Empty) == null)
     {
         Project noProject = new Project();
         noProject.Name      = string.Empty;
         noProject.Status    = Project.ProjectStatus.InProgress;
         noProject.StartDate = new DateTime(2000, 1, 1);
         noProject.EndDate   = new DateTime(2099, 1, 1);
         noProject.Comment   = string.Empty;
         ProjectCache.GetInstance().InsertProject(noProject);
     }
     return(ProjectCache.GetInstance().Projects);
 }
Example #7
0
        public void DeleteProject(int p)
        {
            TransactionManager tm = new TransactionManager();
            //find all transactions under the project to be deleted
            List <Transaction> transactions = tm.GetTransactionsByProjectId(p);

            //replace the project of all the above transactions with the default project
            foreach (Transaction t in transactions)
            {
                t.ParentProject = GetProject(string.Empty);
                tm.SyncTransaction(t);
            }
            //now delete the project from db and cache
            ProjectCache.GetInstance().DeleteProject(p);
        }
Example #8
0
        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
            };
        }
Example #10
0
 public Project GetProject(int id)
 {
     return(ProjectCache.GetInstance().GetProjectById(id));
 }
Example #11
0
 private void InsertNewProject(Project p)
 {
     ProjectCache.GetInstance().InsertProject(p);
 }
Example #12
0
 internal void RefreshCache()
 {
     ProjectCache.GetInstance().Clear();
     ProjectCache.GetInstance();
 }
Example #13
0
        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);
            }
        }