public async Task <IActionResult> DeleteWorkOrder(long workOrderId)
        {
            ProjectManagementModule    pmMod     = new ProjectManagementModule();
            ProjectManagementWorkOrder workOrder = await pmMod.WorkOrder.Query().GetEntityById(workOrderId);

            ProjectManagementWorkOrderView view = await pmMod.WorkOrder.Query().MapToView(workOrder);

            pmMod.WorkOrder.DeleteProjectManagementWorkOrder(workOrder).Apply();
            return(Ok(view));
        }
        public async Task <IActionResult> DeleteMilestone(long milestoneId)
        {
            ProjectManagementModule    pmMod     = new ProjectManagementModule();
            ProjectManagementMilestone milestone = await pmMod.Milestone.Query().GetEntityById(milestoneId);

            ProjectManagementMilestoneView view = await pmMod.Milestone.Query().MapToView(milestone);

            pmMod.Milestone.DeleteProjectManagementMilestone(milestone).Apply();
            return(Ok(view));
        }
        public async Task <IActionResult> DeleteProject(long projectId)
        {
            ProjectManagementModule  pmMod   = new ProjectManagementModule();
            ProjectManagementProject project = await pmMod.Project.Query().GetEntityById(projectId);

            ProjectManagementProjectView view = await pmMod.Project.Query().MapToView(project);

            pmMod.Project.DeleteProject(project).Apply();

            return(Ok(view));
        }
        public async Task <IActionResult> CreateMilestone([FromBody] ProjectManagementMilestone milestone)
        {
            ProjectManagementModule pmMod = new ProjectManagementModule();

            NextNumber nnMileStone = await pmMod.Milestone.Query().GetNextNumber();

            milestone.MileStoneNumber = nnMileStone.NextNumberValue;

            pmMod.Milestone.AddProjectManagementMilestone(milestone).Apply();

            ProjectManagementMilestone queryMilestone = await pmMod.Milestone.Query().GetEntityByNumber(milestone.MileStoneNumber ?? 0);

            ProjectManagementMilestoneView view = await pmMod.Milestone.Query().MapToView(queryMilestone);

            return(Ok(view));
        }
        public async Task <IActionResult> GetWorkOrdersByProjectId(long projectId)
        {
            ProjectManagementModule pmMod = new ProjectManagementModule();

            IQueryable <ProjectManagementWorkOrder> query = await pmMod.WorkOrder.Query().GetEntitiesByProjectId(projectId);

            List <ProjectManagementWorkOrderView> list = new List <ProjectManagementWorkOrderView>();

            foreach (var workOrder in query)
            {
                ProjectManagementWorkOrderView view = await pmMod.WorkOrder.Query().MapToView(workOrder);

                list.Add(view);
            }
            return(Ok(list));
        }
        public async Task <IActionResult> CreateProject([FromBody] ProjectManagementProject newProject)
        {
            ProjectManagementModule pmMod = new ProjectManagementModule();

            NextNumber nnProject = await pmMod.Project.Query().GetNextNumber();

            newProject.ProjectNumber = nnProject.NextNumberValue;

            pmMod.Project.AddProject(newProject).Apply();

            ProjectManagementProject projectSaved = await pmMod.Project.Query().GetEntityByNumber(nnProject.NextNumberValue);

            ProjectManagementProjectView view = await pmMod.Project.Query().MapToView(projectSaved);

            return(Ok(view));
        }
        public async Task <IActionResult> GetMilestonesByProjectId(long projectId)
        {
            ProjectManagementModule pmMod = new ProjectManagementModule();
            IQueryable <ProjectManagementMilestone> query = await pmMod.Milestone.Query().GetEntitiesByProjectId(projectId);

            int count = 0;
            List <ProjectManagementMilestoneView> list = new List <ProjectManagementMilestoneView>();

            foreach (var item in query)
            {
                ProjectManagementMilestoneView view = await pmMod.Milestone.Query().MapToView(item);

                count++;
                list.Add(view);
            }
            return(Ok(list));
        }
        public async Task <IActionResult> GetTasksByMilestoneId(long milestoneId)
        {
            ProjectManagementModule pmMod = new ProjectManagementModule();

            IQueryable <ProjectManagementTask> query = await pmMod.Task.Query().GetEntitiesByMilestoneId(milestoneId);

            List <ProjectManagementTaskView> list = new List <ProjectManagementTaskView>();


            foreach (var item in query)
            {
                ProjectManagementTaskView view = await pmMod.Task.Query().MapToView(item);

                list.Add(view);
            }
            return(Ok(list));
        }
        public async Task <IActionResult> CreateWorkOrder([FromBody] ProjectManagementWorkOrder newWorkOrder)
        {
            ProjectManagementModule pmMod = new ProjectManagementModule();

            NextNumber nnWorkOrder = await pmMod.WorkOrder.Query().GetNextNumber();

            newWorkOrder.WorkOrderNumber = nnWorkOrder.NextNumberValue;


            pmMod.WorkOrder.AddProjectManagementWorkOrder(newWorkOrder).Apply();

            ProjectManagementWorkOrder workOrder = await pmMod.WorkOrder.Query().GetEntityByNumber(nnWorkOrder.NextNumberValue);

            ProjectManagementWorkOrderView view = await pmMod.WorkOrder.Query().MapToView(workOrder);

            return(Ok(view));
        }
        public async Task <IActionResult> CreateWorkOrderToEmployee([FromBody] List <ProjectManagementWorkOrderToEmployee> list)
        {
            List <EmployeeView>     retList = null;
            ProjectManagementModule pmMod   = new ProjectManagementModule();

            if (list.Count() > 0)
            {
                long?workOrderId = list.FirstOrDefault <ProjectManagementWorkOrderToEmployee>().WorkOrderId;
                pmMod.WorkOrderToEmployee.AddProjectManagementWorkOrderToEmployees(list).Apply();

                IEnumerable <EmployeeView> query =
                    await pmMod.Employee.Query().GetEntitiesByWorkOrderId(workOrderId ?? 0);

                retList = new List <EmployeeView>(query);
            }
            return(Ok(retList));
        }
        public async Task <IActionResult> DeleteWorkOrderToEmployee([FromBody] List <ProjectManagementWorkOrderToEmployee> list)
        {
            try
            {
                ProjectManagementModule pmMod = new ProjectManagementModule();
                if (list.Count() > 0)
                {
                    //long ? workOrderId = list.FirstOrDefault<ProjectManagementWorkOrderToEmployee>().WorkOrderId;
                    pmMod.WorkOrderToEmployee.DeleteProjectManagementWorkOrderToEmployees(list).Apply();
                }
                await Task.Yield();

                return(Ok(true));
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }