Exemplo n.º 1
0
        private ProjectView CommonLogicForPatchUpdateMethods(dynamic projectView, string userName, Project projectById)
        {
            var user = Uow.UserRepository.LinkedCacheGetByName(userName);

            if (user == null)
            {
                throw new CoralTimeEntityNotFoundException($"User with userName {userName} not found.");
            }

            var newProjectName = (string)projectView.name;

            var isNameUnique = Uow.ProjectRepository.LinkedCacheGetByName(newProjectName) == null || projectById.Name == newProjectName;

            if (projectView.isActive != null && !(bool)projectView.isActive)
            {
                var timeEntries = Uow.TimeEntryRepository.GetQueryWithIncludes()
                                  .Where(t => t.ProjectId == projectById.Id && t.Date.Date == DateTime.Now.Date)
                                  .ToList();

                timeEntries.ForEach(t => t.StopTimer());
            }

            UpdateService <Project> .UpdateObject(projectView, projectById);

            BLHelpers.CheckProjectsErrors(projectById, isNameUnique);

            try
            {
                Uow.ProjectRepository.Update(projectById);
                Uow.Save();

                Uow.ProjectRepository.LinkedCacheClear();
            }
            catch (Exception e)
            {
                throw new CoralTimeDangerException("An error occurred while updating project", e);
            }

            var projectByIdResult = Uow.ProjectRepository.LinkedCacheGetById(projectById.Id);

            return(projectByIdResult.GetViewTimeTrackerAllProjects(Mapper, GetCacheMembersActiveCount()));
        }
Exemplo n.º 2
0
        public ProjectView Create(ProjectView projectData)
        {
            var user = Uow.UserRepository.LinkedCacheGetByName(CurrentUserName);

            if (user == null)
            {
                throw new CoralTimeEntityNotFoundException($"User with userName {CurrentUserName} not found");
            }

            // TODO rewrite!
            projectData.Name = projectData.Name == null
                ? projectData.Name
                : projectData.Name.Trim();

            var isNameUnique = Uow.ProjectRepository.LinkedCacheGetByName(projectData.Name) == null;

            var project = Mapper.Map <ProjectView, Project>(projectData);

            project.IsActive  = true;
            project.IsPrivate = true;

            BLHelpers.CheckProjectsErrors(project, isNameUnique);

            try
            {
                Uow.ProjectRepository.Insert(project);
                Uow.Save();

                Uow.ProjectRepository.LinkedCacheClear();
            }
            catch (Exception e)
            {
                throw new CoralTimeDangerException("An error occurred while creating project", e);
            }

            var projectById = Uow.ProjectRepository.LinkedCacheGetById(project.Id);

            return(projectById.GetViewTimeTrackerAllProjects(Mapper, GetCacheMembersActiveCount()));
        }