Пример #1
0
        public async Task <Response <WeekTemplateDTO> > CreateWeekTemplate([FromBody] WeekTemplateDTO templateDto)
        {
            var user = await _giraf.LoadBasicUserDataAsync(HttpContext.User);

            if (!await _authentication.HasTemplateAccess(user))
            {
                return(new ErrorResponse <WeekTemplateDTO>(ErrorCode.NotAuthorized));
            }

            if (templateDto == null)
            {
                return(new ErrorResponse <WeekTemplateDTO>(ErrorCode.MissingProperties));
            }

            Department department = _giraf._context.Departments.FirstOrDefault(d => d.Key == user.DepartmentKey);

            if (department == null)
            {
                return(new ErrorResponse <WeekTemplateDTO>(ErrorCode.UserMustBeInDepartment));
            }

            var newTemplate = new WeekTemplate(department);

            var errorCode = await SetWeekFromDTO(templateDto, newTemplate, _giraf);

            if (errorCode != null)
            {
                return(new ErrorResponse <WeekTemplateDTO>(errorCode.ErrorCode, errorCode.ErrorProperties));
            }

            _giraf._context.WeekTemplates.Add(newTemplate);
            await _giraf._context.SaveChangesAsync();

            return(new Response <WeekTemplateDTO>(new WeekTemplateDTO(newTemplate)));
        }
Пример #2
0
        public void UpdateWeekTemplate_AsGuadianOfOtherDepartment_NotAuthorised()
        {
            var wtc = InitializeTest();

            _testContext.MockUserManager.MockLoginAsUser(_testContext.MockUsers[UserGuardian2Department2]);
            var template = new WeekTemplate(_testContext.MockDepartments[MockDepartment2]);

            // modify name
            var templateDTO = new WeekTemplateDTO(template)
            {
                Name = "Test hest"
            };

            var res = wtc.UpdateWeekTemplate(_testContext.MockWeekTemplates[Template1].Id, templateDTO).Result;

            Assert.Equal(ErrorCode.NotAuthorized, res.ErrorCode);;
        }
Пример #3
0
        public void CreateWeekTemplate_NoDays_InvalidAmountOfWeekdays()
        {
            var wtc = InitializeTest();

            _testContext.MockUserManager.MockLoginAsUser(_testContext.MockUsers[UserGuardian2Department2]);
            var template = new WeekTemplate(_testContext.MockDepartments[MockDepartment2]);

            // modify name
            var templateDTO = new WeekTemplateDTO(template)
            {
                Name = "Test Week"
            };

            var res = wtc.CreateWeekTemplate(templateDTO).Result;

            Assert.Equal(ErrorCode.InvalidAmountOfWeekdays, res.ErrorCode);
        }
Пример #4
0
        public async Task <Response <WeekTemplateDTO> > UpdateWeekTemplate(long id, [FromBody] WeekTemplateDTO newValuesDto)
        {
            var user = await _giraf.LoadBasicUserDataAsync(HttpContext.User);

            if (user == null)
            {
                return(new ErrorResponse <WeekTemplateDTO>(ErrorCode.UserNotFound));
            }

            if (newValuesDto == null)
            {
                return(new ErrorResponse <WeekTemplateDTO>(ErrorCode.MissingProperties));
            }

            var template = _giraf._context.WeekTemplates
                           .Include(w => w.Thumbnail)
                           .Include(u => u.Weekdays)
                           .ThenInclude(wd => wd.Activities)
                           .ThenInclude(e => e.Pictogram)
                           .FirstOrDefault(t => id == t.Id);

            if (template == null)
            {
                return(new ErrorResponse <WeekTemplateDTO>(ErrorCode.WeekTemplateNotFound));
            }

            if (!await _authentication.HasTemplateAccess(user, template?.DepartmentKey))
            {
                return(new ErrorResponse <WeekTemplateDTO>(ErrorCode.NotAuthorized));
            }

            var errorCode = await SetWeekFromDTO(newValuesDto, template, _giraf);

            if (errorCode != null)
            {
                return(new ErrorResponse <WeekTemplateDTO>(errorCode.ErrorCode, errorCode.ErrorProperties));
            }

            _giraf._context.WeekTemplates.Update(template);
            await _giraf._context.SaveChangesAsync();

            return(new Response <WeekTemplateDTO>(new WeekTemplateDTO(template)));
        }
Пример #5
0
        public void UpdateWeekTemplate_NewTemplateValidDTO_Success()
        {
            var wtc = InitializeTest();

            _testContext.MockUserManager.MockLoginAsUser(_testContext.MockUsers[UserAdmin]);
            var template = new WeekTemplate(_testContext.MockDepartments[MockDepartment2]);

            // modify name
            var templateDTO = new WeekTemplateDTO(template)
            {
                Name = "Test Week",
                Days = _testContext.MockWeekTemplates[Template2].Weekdays.Select(d => new WeekdayDTO(d)).ToList()
            };

            var res = wtc.UpdateWeekTemplate(_testContext.MockWeekTemplates[Template1].Id, templateDTO).Result;

            Assert.True(res.Success);
            Assert.Equal("Test Week", res.Data.Name);
        }