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))); }
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);; }
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); }
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))); }
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); }