public async Task <IActionResult> PutNewCourseRequest(int id, NewCourseRequest newCourseRequest)
        {
            if (id != newCourseRequest.Id)
            {
                return(BadRequest());
            }

            _context.Entry(newCourseRequest).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!NewCourseRequestExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
        public async Task <IActionResult> PutNewCourseRequest(int?id, NewCourseRequest newCourseRequest)
        {
            if (id == null)
            {
                return(BadRequest("CourseId is Empty"));
            }

            try
            {
                var updateApproval = await _context.NewCourseRequests.FirstOrDefaultAsync(m => m.Id == id);

                if (updateApproval == null)
                {
                    return(NotFound($"Course Not Found For The Selected Id {id}"));
                }
                updateApproval.Approved     = newCourseRequest.Approved = true;
                updateApproval.ApprovedBy   = newCourseRequest.ApprovedBy;
                updateApproval.ApprovedDate = newCourseRequest.ApprovedDate = DateTime.Now;
                await _context.SaveChangesAsync();

                return(Ok(updateApproval));
            }
            catch (Exception ex)
            {
                return(StatusCode(500, ex.Message));
            }
        }
 private static ApiRequest PopulateNewCourse(ApiRequest request, NewCourseRequest new_course)
 {
     return(request
            .Payload("course[name]", new_course.Name)
            .Payload("course[course_code]", new_course.CourseCode)
            .Payload("course[licence]", new_course.Licence)
            .Payload("course[is_public]", new_course.IsPublic.ToString().ToLower())
            .Payload("enroll_me", new_course.EnrollMe.ToString().ToLower())
            .Payload("course[open_enrollment]", new_course.OpenEnrollment.ToString().ToLower())
            .Payload("course[self_enrollment]", new_course.SelfEnrollment.ToString().ToLower())
            );
 }
        public async static Task DoTheCourses()
        {
            //var self_account = await client.AccountsManager.GetSelf();
            //var all_courses = await client.CoursesManager.GetAll().ConfigureAwait(false);

            //foreach (var course in all_courses)
            //{
            //    Console.WriteLine(String.Format("Name: {0} | ID: {0}", course.Name, course.Id));
            //    var lookup_course = await client.CoursesManager.Get(course.Id);
            //    if (lookup_course != null)
            //        Console.WriteLine(String.Format("Lookup Success: Name: {0}, ID: {1} ", lookup_course.Name, lookup_course.Id));
            //}


            //var course_request = new CourseRequest();
            //course_request.Course = new Course()
            //{
            //    Name = "New Course From Test App",
            //    CourseCode = "TAC",
            //    PublicSyllabus = true,

            //};
            //course_request.AccountId = (int)self_account.Id;

            var new_course_request = new NewCourseRequest()
            {
                Name           = "Test Open Enroll API 1",
                CourseCode     = "API",
                Licence        = "private",
                OpenEnrollment = true,
                SelfEnrollment = true,
                IsPublic       = true,
                EnrollMe       = true,
            };

            //var new_course = await client.AccountsManager.CreateNewCourse(new_course_request);
            //var course_id = new_course.Id;
            var course_id = 27;
            var course_for_secret_code = await client.CoursesManager.Get(course_id, true);

            var secret_code = course_for_secret_code.SelfEnrollmentCode;
            //var new_user = await client.UsersManager.CreateNewUser("*****@*****.**", "Andrew Test1", "Test1, Andrew");
            var new_user = await client.UsersManager.CreateNewUser("thatsnotmylane+12", "Andrew NoEmail", "NoEmail, Andrew");

            var new_enrollment = await client.CoursesManager.EnrollUser(course_id, new_user.Id, EnrollmentType.StudentEnrollment);

            return;
        }
        /// <summary>
        /// Create a new course based off of a NewCourseRequest object. Technically no parameters are required
        /// </summary>
        /// <param name="NewCourse"></param>
        /// <returns></returns>
        public async Task <Course> CreateNewCourse(NewCourseRequest NewCourse)
        {
            var account = "self";

            if (NewCourse.AccountId != null)
            {
                account = string.Format("{0}", NewCourse.AccountId);
            }

            // POST /api/v1/accounts/:account_id/courses
            var request = new ApiRequest(_config.AccountsEndpointUri, account + "/courses")
                          .Method(RequestMethod.Post)
            ;

            request = PopulateNewCourse(request, NewCourse);

            return(await GetReponseAsync <Course>(request).ConfigureAwait(false));
        }
        public async Task <ActionResult <NewCourseRequest> > PostNewCourseRequest(NewCourseRequest newCourseRequest)
        {
            try
            {
                var newCourseRecom = new NewCourseRequest
                {
                    Name           = newCourseRequest.Name,
                    Approved       = newCourseRequest.Approved = false,
                    DateIn         = newCourseRequest.DateIn = DateTime.Now,
                    InstitiutionId = newCourseRequest.InstitiutionId,
                    ReqstType      = newCourseRequest.ReqstType,
                };
                _context.NewCourseRequests.Add(newCourseRecom);
                await _context.SaveChangesAsync();

                return(CreatedAtAction("PostNewCourseRequest", new { id = newCourseRecom.Id }, newCourseRecom));
            }
            catch (DbUpdateException)
            {
                return(StatusCode(500, $"{newCourseRequest.Name} HAS BEEN SENT FOR SETUP, PREVIOUSLY, PLEASE CHECK!!!"));
            }
        }
        public async Task <ActionResult <NewCourseRequest> > PostNewCourseRequest(NewCourseRequest newCourseRequest)
        {
            try
            {
                var newCourseRecom = new NewCourseRequest
                {
                    Name           = newCourseRequest.Name,
                    Approved       = newCourseRequest.Approved = false,
                    DateIn         = newCourseRequest.DateIn = DateTime.Now,
                    InstitiutionId = newCourseRequest.InstitiutionId,
                    ReqstType      = newCourseRequest.ReqstType,
                    Code           = newCourseRequest.Code,

                    Address1       = newCourseRequest.Address1,
                    Address2       = newCourseRequest.Address2,
                    LGAId          = newCourseRequest.LGAId,
                    CoporationType = newCourseRequest.CoporationType,
                    YearOfIncop    = newCourseRequest.YearOfIncop,
                    BusinessLineId = newCourseRequest.BusinessLineId,

                    BusinessType = newCourseRequest.BusinessType,
                    AreaOfficeId = newCourseRequest.AreaOfficeId,
                    WebAddress   = newCourseRequest.WebAddress,
                    Email        = newCourseRequest.Email,
                    PhoneNo      = newCourseRequest.PhoneNo,
                    PhoneNo2     = newCourseRequest.PhoneNo2,
                };
                _context.NewCourseRequests.Add(newCourseRecom);
                await _context.SaveChangesAsync();

                return(CreatedAtAction("PostNewCourseRequest", new { id = newCourseRecom.Id }, newCourseRecom));
            }
            catch (DbUpdateException)
            {
                return(StatusCode(500, $"{newCourseRequest.Name} HAS BEEN SENT FOR SETUP, PREVIOUSLY, PLEASE CHECK!!!"));
            }
        }