public async Task <IActionResult> PutAsync(int id, [FromBody] SaveAssignmentResource resource)
        {
            var assignment = _mapper.Map <SaveAssignmentResource, Assignment>(resource);
            var result     = await _assignmentService.UpdateAsync(id, assignment);

            if (!result.Success)
            {
                return(BadRequest(result.Message));
            }
            var assignmentResource = _mapper.Map <Assignment, AssignmentResource>(result.Resource);

            return(Ok(assignmentResource));
        }
        public async Task <IActionResult> Assign([FromBody] SaveAssignmentResource resource)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var courseOffering = await unitOfWork.CourseOfferings.GetCourseOffering(resource.CourseOfferingId);

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

            if (resource.InstructorId.HasValue)
            {
                var assignment = courseOffering.Instructors.SingleOrDefault(i => i.TypeId == resource.TypeId);

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

                assignment.InstructorId = resource.InstructorId;
                await unitOfWork.CompleteAsync();

                assignment = await unitOfWork.CourseOfferingInstructorAssignments.GetInstructorAssignment(resource.CourseOfferingId, resource.InstructorId.Value, resource.TypeId);

                return(Ok(mapper.Map <InstructorAssignment, InstructorAssignmentResource>(assignment)));
            }
            else if (resource.RoomId.HasValue)
            {
                var assignment = courseOffering.Rooms.SingleOrDefault(i => i.TypeId == resource.TypeId);

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

                assignment.RoomId = resource.RoomId;
                await unitOfWork.CompleteAsync();

                return(Ok(resource.RoomId));
            }

            return(BadRequest());
        }
        public async Task <IActionResult> PostAsync(SaveAssignmentResource resource)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.GetErrorMessages()));
            }
            var assignment = _mapper.Map <SaveAssignmentResource, Assignment>(resource);
            var result     = await _assignmentService.SaveAsync(assignment);

            if (!result.Success)
            {
                return(BadRequest(result.Message));
            }

            var assignmentResource = _mapper.Map <Assignment, AssignmentResource>(result.Resource);

            return(Ok(assignmentResource));
        }