示例#1
0
        /// <summary>
        /// Akcja przygotowuje widok dla głównej strony aplikacji.
        /// Jeżeli zalogowany zostanie użytkownik z rolą "User",
        /// to zostanie wygenerowany widok listy zadań (widok użytkownika - pracownika).
        /// </summary>
        /// <returns>Lista zadań użytkownika lub widok strony głównej.</returns>
        public async Task <IActionResult> IndexAsync()
        {
            if (User.IsInRole("User"))
            {
                var user = await userManager.GetUserAsync(User);

                var employee    = _context.Employees.Where(e => e.EmployeeUserID == user.Id).Single();
                var ListOfTasks = _context.ProjectTasks.Where(p => p.EmployeeID == employee.EmployeeID).ToList();
                List <ProjectTaskViewModel> ListOfTasksViewModel = new List <ProjectTaskViewModel>();
                foreach (var item in ListOfTasks)
                {
                    ProjectTaskViewModel projectTaskViewModel = new ProjectTaskViewModel();
                    projectTaskViewModel.TaskName = item.TaskName;
                    var CreatedBy = _context.Employees.Where(e => e.EmployeeID == item.TaskCreatedBy).First();
                    projectTaskViewModel.TaskID        = item.TaskID;
                    projectTaskViewModel.TaskDeadline  = item.TaskDeadline;
                    projectTaskViewModel.TaskCreatedBy = CreatedBy.EmployeeNameSurname;
                    projectTaskViewModel.IsEnd         = item.IsEnd;
                    ListOfTasksViewModel.Add(projectTaskViewModel);
                }

                return(View(ListOfTasksViewModel));
            }

            return(View());
        }
示例#2
0
        public async Task <BaseResult <int> > InsertProject(ProjectTaskViewModel model)
        {
            var project = _mapper.Map <Project>(model);
            await Repository.InsertAsync(project);

            return(BaseResult <int> .OK(project.Id, Messages.ItemInserted));
        }
        public async Task <ActionResult <ProjectTaskViewModel> > GetProjectTaskAsync(Guid id)
        {
            if (id == Guid.Empty)
            {
                return(BadRequest("No valid id."));
            }
            try
            {
                TaskResult <ProjectTask> result = await taskService.GetProjectTaskAsync(id);

                if (!result.Succeeded)
                {
                    if (result.Data == null)
                    {
                        return(NotFound());
                    }
                }
                ProjectTaskViewModel projectTaskViewModel = ProjectTaskViewModel.CreateVm(result.Data);
                return(Ok(projectTaskViewModel));
            }
            catch (Exception ex)
            {
                string message = GetType().Name + "Error in " + nameof(GetProjectTaskAsync);
                logger.LogError(ex, message);
                return(UnprocessableEntity(new ErrorViewModel {
                    Type = Type.Error, Message = message
                }));
            }
        }
        public ActionResult AddTask()
        {
            var item = new ProjectTaskViewModel();

            item.Employeess = new SelectList(TaskServ.Displaypendingtasks(), "EmployeeId", "EmployeeName", "EmployeeDesignation");
            return(View(item));
        }
        public async Task <ActionResult <TaskViewModel> > AddTaskToProjectAsync(ProjectTaskViewModel projectTaskViewModel)
        {
            if (projectTaskViewModel == null)
            {
                return(BadRequest("No valid ProjectTask received"));
            }
            if (projectTaskViewModel.ProjectId == Guid.Empty || projectTaskViewModel.TaskId == Guid.Empty)
            {
                return(BadRequest("Project and/or Task Ids cannot be empty"));
            }

            try
            {
                ProjectTask projectTask = ProjectTaskViewModel.CreateProjectTask(projectTaskViewModel);
                if (projectTask == null)
                {
                    return(BadRequest("Unable to convert ProjectTaskViewModel to ProjectTask"));
                }
                projectTask.Task    = (await taskService.GetTaskAsync(projectTask.TaskId)).Data;
                projectTask.Project = (await projectService.GetProjectDetailsAsync(projectTask.ProjectId)).Data;
                if (projectTask.Task == null || projectTask.Project == null)
                {
                    return(BadRequest("Unable to add project and or task to projecttask"));
                }

                string oid = IdentityHelper.GetOid(HttpContext.User.Identity as ClaimsIdentity);
                projectTask.LastEditBy = oid;

                TaskResult <ProjectTask> result;
                if (projectTask.Id == Guid.Empty)
                {
                    result = await taskService.AddTaskToProjectAsync(projectTask);
                }
                else
                {
                    return(BadRequest("Cannot update existing ProjectTask with post method"));
                }

                if (!result.Succeeded)
                {
                    return(UnprocessableEntity(new ErrorViewModel {
                        Type = Type.Error, Message = result.Message
                    }));
                }
                return(Ok(TaskViewModel.CreateVm(result.Data.Task)));
            }
            catch (Exception ex)
            {
                string message = GetType().Name + "Error in " + nameof(AddTaskToProjectAsync);
                logger.LogError(ex, message);
                return(UnprocessableEntity(new ErrorViewModel {
                    Type = Type.Error, Message = message
                }));
            }
        }
示例#6
0
        public async Task <ActionResult> Change(int id)
        {
            Project project = _task.GetProject(id);

            ViewBag.TaskLists = new SelectList(project.TaskLists, "Id", "Name");
            var model = new ProjectTaskViewModel {
                CurrentTask = _task.GetById(id), TaskLists = project.TaskLists.ToList()
            };

            return(PartialView(model));
        }
        public ActionResult ProjectTaskByStatus(int id)
        {
            var pservice = new ProjectService();
            var project  = pservice.Find(id);

            var tservice = new TaskService();
            var tasks    = tservice.GetTasks(id);

            var viewmodel = new ProjectTaskViewModel();

            viewmodel.ProjectId        = project.ProjectId;
            viewmodel.ProjectTitle     = project.ProjectTitle;
            viewmodel.ProjectStartDate = project.ProjectStartDate;
            viewmodel.ProjectEndDate   = project.ProjectEndDate;
            viewmodel.EmployeeId       = project.EmployeeId;

            viewmodel.Tasks = tasks;

            return(View(viewmodel));
        }
        public ActionResult DisplayProjectTask(int id)
        {
            var prepository = new ProjectRepository();
            var project     = prepository.Find(id);

            var trepository = new TaskNRepository();
            var tasks       = trepository.GetTasks(id);

            var viewmodel = new ProjectTaskViewModel();

            viewmodel.ProjectId        = project.ProjectId;
            viewmodel.ProjectTitle     = project.ProjectTitle;
            viewmodel.ProjectStartDate = project.ProjectStartDate;
            viewmodel.ProjectEndDate   = project.ProjectEndDate;
            viewmodel.EmployeeId       = project.EmployeeId;

            viewmodel.Tasks = tasks;

            return(View(viewmodel));
        }
        public IHttpActionResult PostProjectTasks(ProjectTaskViewModel projectTasksVM)
        //, int projectBoardId
        //[FromBody]ProjectTasks projectTasks, [FromUri]int projectBoardId
        {
            var projectTasks = projectTasksVM.ProjectTasks;

            projectTasks.CreatedOn = DateTime.Now;
            if (projectTasks.StartedOn != null)
            {
                projectTasks.StartedOn = Convert.ToDateTime(projectTasks.StartedOn).ToLocalTime();
            }

            if (projectTasks.EndedOn != null)
            {
                projectTasks.EndedOn = Convert.ToDateTime(projectTasks.EndedOn).ToLocalTime();
            }

            if (projectTasks.EstimatedEndsOn != null)
            {
                projectTasks.EstimatedEndsOn = Convert.ToDateTime(projectTasks.EstimatedEndsOn).ToLocalTime();
            }

            if (User.Identity.GetUserId() != null)
            {
                projectTasks.CreatedBy = User.Identity.GetUserId();
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var isNeed = projectTasksVM.IsWordNeed.HasValue? projectTasksVM.IsWordNeed.Value : false;

            var res = CreateProjectTask(projectTasksVM.ProjectTasks, isNeed);

            //instead of trigger
            var addedTask = db.ProjectTasks.Add(projectTasks);

            return(CreatedAtRoute("DefaultApi", new { id = addedTask.Id }, addedTask));
        }
示例#10
0
        public async Task <HttpResponse <int> > UpdateProject(ProjectTaskViewModel model)
        {
            var project = await Repository.FindAsync(model.Id);

            if (project == null)
            {
                return(HttpResponse <int> .Error(Messages.ActionFailed, statusCode : System.Net.HttpStatusCode.NoContent));
            }

            project.Name      = model.Name;
            project.StartDate = model.StartDate;
            project.EndDate   = model.EndDate;
            project.AssignTo  = model.AssignTo;
            project.Status    = model.Status;
            int saved = await _unitOfWork.SaveChangesAsync();

            if (saved > 0)
            {
                return(HttpResponse <int> .OK(project.Id, Messages.ItemUpdated));
            }

            return(HttpResponse <int> .Error(Messages.ActionFailed, statusCode : System.Net.HttpStatusCode.BadRequest));
        }
示例#11
0
        public async Task <IActionResult> Post([FromBody] ProjectTaskViewModel task)
        {
            if (ModelState.IsValid)
            {
                ProjectTask projectTask = Mapper.Map <ProjectTask>(task);

                if (task.TaskID == 0)
                {
                    projectTask.CreatedBy  = User.Identity.Name;
                    projectTask.CreateDate = DateTime.Now;
                }
                else
                {
                    projectTask = await _taskService.GetTask(task.TaskID);

                    projectTask.ModifiedBy = User.Identity.Name;
                    projectTask.ModifyDate = DateTime.Now;
                }

                await _taskService.SaveTask(projectTask);
            }

            return(Ok());
        }
示例#12
0
        private string ProjectManagementTaskJson()
        {
            IEnumerable <TaskMgmtPartRecord> _tasks      = _projTasks.GetTasks();
            ProjectTaskViewModel             _taskPartVM = new ProjectTaskViewModel(_tasks);
            dynamic jsonTask = new JObject();

            jsonTask.tasks = new JArray(_tasks.Select(_task =>
            {
                dynamic task          = new JObject();
                task.id               = _task.Id;
                task.name             = "Demo";
                task.status           = _task.Status;
                task.code             = _task.TaskCode;
                task.level            = _task.Level;
                task.duration         = _task.Duration;
                task.startIsMilestone = _task.StartIsMilestone;
                task.endIsMilestone   = _task.EndIsMilestone;
                task.progress         = _task.Progress;
                if (_task.Dependancy != null)
                {
                    task.depends = _task.Dependancy;
                }
                //task.start = DateTime.Now.AddDays(10).Millisecond;
                if (_task.ProjStartDate != null)
                {
                    DateTime start = (DateTime)_task.ProjStartDate;
                    task.start     = (long)(start - new DateTime(1970, 1, 1)).TotalMilliseconds;
                }
                return(task);
            }));
            jsonTask.selectedRow      = 0;
            jsonTask.canWrite         = true;
            jsonTask.canWriteOnParent = true;

            return(FormParametersHelper.ToJsonString(jsonTask));
        }
示例#13
0
        public async Task <IActionResult> UpdateProject([FromBody] ProjectTaskViewModel model)
        {
            var response = await _projectService.UpdateProject(model);

            return(StatusCode(response));
        }
示例#14
0
        public async Task <ActionResult> Change(int id, ProjectTaskViewModel model)
        {
            await _task.ChangePosition(id, model.ChangeId);

            return(Json(new { success = true }));
        }
示例#15
0
        public async Task <ActionResult <ProjectTaskViewModel> > UpdateItem([FromForm] ProjectTaskViewModel item)
        {
            try
            {
                var existItem = await _projectTaskRepository.ProjectTaskByIdAsync(item.ProjectTaskId);

                if (existItem == null)
                {
                    return(NotFound());
                }

                var project = await ProjectByIdAsync(item.ProjectId);

                if (project == null)
                {
                    return(BadRequest("Выбранный проект не найден"));
                }

                var group = await GroupByIdAsync(item.GroupId);

                if (group == null)
                {
                    return(BadRequest("Выбранная группа не найдена"));
                }

                var taskType = await TaskTypeByIdAsync(item.TaskTypeId);

                if (taskType == null)
                {
                    return(BadRequest("Выбранный тип задачи не найден"));
                }

                var taskStatus = await ProjectTaskStatusByIdAsync(item.ProjectTaskStatusId);

                if (taskStatus == null)
                {
                    return(BadRequest("Выбранный статус не найден"));
                }

                existItem.Block = await BlockByIdAsync(item.BlockId);

                existItem.Project    = project;
                existItem.Group      = group;
                existItem.TaskStatus = taskStatus;
                existItem.TaskType   = taskType;

                existItem.Details       = item.Details;
                existItem.Note          = item.Note;
                existItem.Priority      = item.Priority;
                existItem.DurationHours = item.DurationHours;

                existItem.StartPlan = item.StartPlan;
                existItem.EndPlan   = item.EndPlan;

                existItem.StartFact = item.StartFact;
                existItem.EndFact   = item.EndFact;

                existItem.EffectAfterHours = item.EffectAfterHours;
                existItem.EffectAfterHours = item.EffectAfterHours;

                existItem.Important = item.Important;

                existItem.DateEdited = DateTime.Now;

                var userEdited = (await _userRepository.FindAsync(e => !e.Deleted && e.Login.ToLower().Equals(_userService.userLogin.ToLower()))).SingleOrDefault();
                existItem.LoginEdited = userEdited != null ? userEdited.ShortName : _userService.userLogin;

                var newPerformers = new List <User>();

                if (!string.IsNullOrEmpty(item.Users))
                {
                    existItem.ProjectTaskPerformers ??= new List <ProjectTaskPerformer>();

                    var userIds = item.Users.Split(",").Select(e => int.Parse(e)).ToList();

                    foreach (var p in existItem.ProjectTaskPerformers)
                    {
                        // пользователя нет в новых данных
                        if (!userIds.Any(e => e == p.UserId))
                        {
                            p.Deleted = true;
                        }
                    }

                    foreach (int userId in userIds)
                    {
                        // проверяем
                        if (!existItem.ProjectTaskPerformers.Any(e => e.UserId.Equals(userId) && !e.Deleted))
                        {
                            var user = await _userRepository.FindByIdAsync(userId);

                            if (user != null)
                            {
                                existItem.ProjectTaskPerformers.Add(new ProjectTaskPerformer()
                                {
                                    User = user
                                });

                                newPerformers.Add(user);
                            }
                        }
                    }
                }
                else if (existItem.ProjectTaskPerformers != null && existItem.ProjectTaskPerformers.Count > 0)
                {
                    foreach (var p in existItem.ProjectTaskPerformers)
                    {
                        p.Deleted = true;
                    }
                }

                await _projectTaskRepository.EditAsync(existItem);

                //тут - для новых пользователей создается почтовое уведомление о задаче
                await _mailRepository.CreateMailsForNewPerformersAsync(newPerformers, existItem);

                return(_mapper.Map <ProjectTaskViewModel>(existItem));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
示例#16
0
        public async Task <ActionResult <ProjectTaskViewModel> > CreateItem([FromForm] ProjectTaskViewModel item)
        {
            try
            {
                if (item.ProjectTaskId > 0)
                {
                    return(BadRequest("Идентификатор записи должен быть равен 0"));
                }

                var project = await ProjectByIdAsync(item.ProjectId);

                if (project == null)
                {
                    return(BadRequest("Выбранный проект не найден"));
                }

                var group = await GroupByIdAsync(item.GroupId);

                if (group == null)
                {
                    return(BadRequest("Выбранная группа не найдена"));
                }

                var taskType = await TaskTypeByIdAsync(item.TaskTypeId);

                if (taskType == null)
                {
                    return(BadRequest("Выбранный тип задачи не найден"));
                }

                var taskStatus = await ProjectTaskStatusByIdAsync(item.ProjectTaskStatusId);

                if (taskStatus == null)
                {
                    return(BadRequest("Выбранный статус не найден"));
                }

                var block = await BlockByIdAsync(item.BlockId);

                var newItem = _mapper.Map <ProjectTask>(item);

                newItem.Project    = project;
                newItem.Group      = group;
                newItem.TaskStatus = taskStatus;
                newItem.TaskType   = taskType;

                if (block != null)
                {
                    newItem.Block = block;
                }

                newItem.DateCreated = DateTime.Now;

                var userCreated = (await _userRepository.FindAsync(e => !e.Deleted && e.Login.ToLower().Equals(_userService.userLogin.ToLower()))).SingleOrDefault();
                newItem.LoginCreated = userCreated != null ? userCreated.ShortName : _userService.userLogin;

                newItem.ProjectTaskPerformers = new List <ProjectTaskPerformer>();

                if (!string.IsNullOrEmpty(item.Users))
                {
                    var userIds = item.Users.Split(",").Select(e => int.Parse(e)).ToList();
                    foreach (int userId in userIds)
                    {
                        var user = await _userRepository.FindByIdAsync(userId);

                        newItem.ProjectTaskPerformers.Add(new ProjectTaskPerformer()
                        {
                            User = user
                        });
                    }
                }

                await _projectTaskRepository.CreateAsync(newItem);

                // формируем почтовые уведомления
                await _mailRepository.CreateMailsForNewPerformersAsync(newItem.ProjectTaskPerformers.Select(e => e.User).ToList(), newItem);

                return(_mapper.Map <ProjectTaskViewModel>(newItem));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }