/// <summary>
        ///
        /// </summary>
        /// <remarks>Returns History for a particular SchoolBus</remarks>
        /// <param name="id">id of SchoolBus to fetch SchoolBusHistory for</param>
        /// <response code="200">OK</response>

        public virtual IActionResult SchoolbusesIdHistoryGetAsync(int id, int?offset, int?limit)
        {
            bool exists = _context.SchoolBuss.Any(a => a.Id == id);

            if (exists)
            {
                SchoolBus schoolBus = _context.SchoolBuss
                                      .Include(x => x.History)
                                      .First(a => a.Id == id);

                List <History> data = schoolBus.History.OrderByDescending(y => y.LastUpdateTimestamp).ToList();

                if (offset == null)
                {
                    offset = 0;
                }
                if (limit == null)
                {
                    limit = data.Count() - offset;
                }
                List <HistoryViewModel> result = new List <HistoryViewModel>();

                for (int i = (int)offset; i < data.Count() && i < offset + limit; i++)
                {
                    result.Add(data[i].ToViewModel(id));
                }

                return(new ObjectResult(result));
            }
            else
            {
                // record not found
                return(new StatusCodeResult(404));
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <remarks>Add a History record to the SchoolBus</remarks>
        /// <param name="id">id of SchoolBus to fetch History for</param>
        /// <param name="item"></param>
        /// <response code="201">History created</response>
        public virtual IActionResult SchoolbusesIdHistoryPostAsync(int id, History item)
        {
            HistoryViewModel result = new HistoryViewModel();

            bool exists = _context.SchoolBuss.Any(a => a.Id == id);

            if (exists)
            {
                SchoolBus schoolBus = _context.SchoolBuss
                                      .Include(x => x.History)
                                      .First(a => a.Id == id);
                if (schoolBus.History == null)
                {
                    schoolBus.History = new List <History>();
                }
                // force add
                item.Id = 0;
                schoolBus.History.Add(item);
                _context.SchoolBuss.Update(schoolBus);
                _context.SaveChanges();
            }

            result.HistoryText         = item.HistoryText;
            result.Id                  = item.Id;
            result.LastUpdateTimestamp = item.LastUpdateTimestamp;
            result.LastUpdateUserid    = item.LastUpdateUserid;
            result.AffectedEntityId    = id;

            return(new ObjectResult(result));
        }
        /// <summary>
        ///
        /// </summary>
        /// <remarks>Returns CCWData for a particular Schoolbus</remarks>
        /// <param name="id">id of SchoolBus to fetch CCWData for</param>
        /// <response code="200">OK</response>

        public virtual IActionResult SchoolbusesIdCcwdataGetAsync(int id)
        {
            // validate the bus id
            bool exists = _context.SchoolBuss.Any(a => a.Id == id);

            if (exists)
            {
                SchoolBus schoolbus = _context.SchoolBuss.Where(a => a.Id == id).First();
                string    regi      = schoolbus.ICBCRegistrationNumber;
                // get CCW data for this bus.

                // could be none.
                // validate the bus id
                bool ccw_exists = _context.CCWDatas.Any(a => a.ICBCRegistrationNumber == regi);
                if (ccw_exists)
                {
                    var result = _context.CCWDatas.Where(a => a.ICBCRegistrationNumber == regi).First();
                    return(new ObjectResult(result));
                }
                else
                {
                    // record not found
                    CCWData[] nodata = new CCWData[0];
                    return(new ObjectResult(nodata));
                }
            }
            else
            {
                // record not found
                return(new StatusCodeResult(404));
            }
        }
Exemple #4
0
        /// <summary>
        ///  Basic file receiver for .NET Core
        /// </summary>
        /// <param name="id">Schoolbus Id</param>
        /// <param name="files">Files to add to attachments</param>
        /// <returns></returns>
        public IActionResult SchoolbusesIdAttachmentsPostAsync(int id, IList <IFormFile> files)
        {
            // validate the bus id
            bool exists = _context.SchoolBuss.Any(a => a.Id == id);

            if (exists)
            {
                SchoolBus schoolbus = _context.SchoolBuss
                                      .Include(x => x.Attachments)
                                      .Include(x => x.HomeTerminalCity)
                                      .Include(x => x.SchoolDistrict)
                                      .Include(x => x.SchoolBusOwner.PrimaryContact)
                                      .Include(x => x.District.Region)
                                      .Include(x => x.Inspector)
                                      .Include(x => x.CCWData)
                                      .First(a => a.Id == id);

                AddFilesToAttachments(schoolbus.Attachments, files);

                _context.SchoolBuss.Update(schoolbus);
                _context.SaveChanges();

                List <AttachmentViewModel> result = MappingExtensions.GetAttachmentListAsViewModel(schoolbus.Attachments);

                return(new ObjectResult(result));
            }
            else
            {
                // record not found
                return(new StatusCodeResult(404));
            }
        }
        /// <summary>
        ///
        /// </summary>

        /// <param name="item"></param>
        /// <response code="201">Inspection created</response>

        public virtual IActionResult InspectionsPostAsync(Inspection item)
        {
            if (item != null)
            {
                if (item.Inspector != null)
                {
                    int  user_id     = item.Inspector.Id;
                    bool user_exists = _context.Users.Any(a => a.Id == user_id);
                    if (user_exists)
                    {
                        User user = _context.Users.First(a => a.Id == user_id);
                        item.Inspector = user;
                    }
                    else
                    {
                        item.Inspector = null;
                    }
                }
                // adjust the schoolbus
                if (item.SchoolBus != null)
                {
                    int  schoolbus_id     = item.SchoolBus.Id;
                    bool schoolbus_exists = _context.SchoolBuss.Any(a => a.Id == schoolbus_id);
                    if (schoolbus_exists)
                    {
                        SchoolBus schoolbus = _context.SchoolBuss.First(a => a.Id == schoolbus_id);
                        item.SchoolBus = schoolbus;
                    }
                    else
                    {
                        item.SchoolBus = null;
                    }
                }

                var exists = _context.Inspections.Any(a => a.Id == item.Id);
                if (exists)
                {
                    _context.Inspections.Update(item);
                    // Save the changes
                    _context.SaveChanges();
                    return(new ObjectResult(item));
                }
                else
                {
                    // Inspection has a special field, createdDate which is set to now.
                    item.CreatedDate = DateTime.UtcNow;
                    _context.Inspections.Add(item);
                }

                _context.SaveChanges();
                return(new ObjectResult(item));
            }
            else
            {
                // no data
                return(new StatusCodeResult(400));
            }
        }
Exemple #6
0
        /// <summary>
        /// Creates a new school bus
        /// </summary>
        /// <remarks>The Location response-header field is used to redirect the recipient to a location other than the Request-URI for completion of the request or identification of a new resource. For 201 (Created) responses, the Location is that of the new resource which was created by the request.    The field value consists of a single absolute URI. </remarks>
        /// <param name="item"></param>
        /// <response code="201">SchoolBus created</response>

        public virtual IActionResult AddBusAsync(SchoolBus item)
        {
            // adjust school bus owner

            if (item.SchoolBusOwner != null)
            {
                int  school_bus_owner_id     = item.SchoolBusOwner.Id;
                bool school_bus_owner_exists = _context.SchoolBusOwners.Any(a => a.Id == school_bus_owner_id);
                if (school_bus_owner_exists)
                {
                    SchoolBusOwner school_bus_owner = _context.SchoolBusOwners.First(a => a.Id == school_bus_owner_id);
                    item.SchoolBusOwner = school_bus_owner;
                }
            }

            // adjust service area.

            if (item.ServiceArea != null)
            {
                int  service_area_id     = item.ServiceArea.Id;
                bool service_area_exists = _context.ServiceAreas.Any(a => a.Id == service_area_id);
                if (service_area_exists)
                {
                    ServiceArea service_area = _context.ServiceAreas.First(a => a.Id == service_area_id);
                    item.ServiceArea = service_area;
                }
            }

            // adjust school district

            if (item.SchoolBusDistrict != null)
            {
                int  schoolbus_district_id     = item.SchoolBusDistrict.Id;
                bool schoolbus_district_exists = _context.SchoolDistricts.Any(a => a.Id == schoolbus_district_id);
                if (schoolbus_district_exists)
                {
                    SchoolDistrict school_district = _context.SchoolDistricts.First(a => a.Id == schoolbus_district_id);
                    item.SchoolBusDistrict = school_district;
                }
            }

            // adjust home city

            if (item.HomeTerminalCity != null)
            {
                int  city_id     = item.HomeTerminalCity.Id;
                bool city_exists = _context.Cities.Any(a => a.Id == city_id);
                if (city_exists)
                {
                    City city = _context.Cities.First(a => a.Id == city_id);
                    item.HomeTerminalCity = city;
                }
            }

            _context.SchoolBuss.Add(item);
            _context.SaveChanges();
            return(new ObjectResult(item));
        }
        /// <summary>
        ///
        /// </summary>

        /// <param name="body"></param>
        /// <response code="201">Inspections created</response>

        public virtual IActionResult InspectionsBulkPostAsync(Inspection[] items)
        {
            if (items == null)
            {
                return(new BadRequestResult());
            }
            foreach (Inspection item in items)
            {
                // adjust the user
                if (item.Inspector != null)
                {
                    int  user_id     = item.Inspector.Id;
                    bool user_exists = _context.Users.Any(a => a.Id == user_id);
                    if (user_exists)
                    {
                        User user = _context.Users.First(a => a.Id == user_id);
                        item.Inspector = user;
                    }
                    else
                    {
                        item.Inspector = null;
                    }
                }
                // adjust the schoolbus
                if (item.SchoolBus != null)
                {
                    int  schoolbus_id     = item.SchoolBus.Id;
                    bool schoolbus_exists = _context.SchoolBuss.Any(a => a.Id == schoolbus_id);
                    if (schoolbus_exists)
                    {
                        SchoolBus schoolbus = _context.SchoolBuss.First(a => a.Id == schoolbus_id);
                        item.SchoolBus = schoolbus;
                    }
                    else
                    {
                        item.SchoolBus = null;
                    }
                }
                bool exists = _context.Inspections.Any(a => a.Id == item.Id);
                if (exists)
                {
                    _context.Inspections.Update(item);
                }
                else
                {
                    // Inspection has a special field, createdDate which is set to now.
                    item.CreatedDate = DateTime.UtcNow;
                    _context.Inspections.Add(item);
                }
            }
            // Save the changes
            _context.SaveChanges();
            return(new NoContentResult());
        }
        /// <summary>
        ///
        /// </summary>

        /// <param name="id">id of Inspection to fetch</param>
        /// <response code="200">OK</response>
        /// <response code="404">Inspection not found</response>

        public virtual IActionResult InspectionsIdPutAsync(int id, Inspection item)
        {
            // adjust the user
            if (item.Inspector != null)
            {
                int  user_id     = item.Inspector.Id;
                bool user_exists = _context.Users.Any(a => a.Id == user_id);
                if (user_exists)
                {
                    User user = _context.Users.First(a => a.Id == user_id);
                    item.Inspector = user;
                }
                else
                {
                    item.Inspector = null;
                }
            }
            // adjust the schoolbus
            if (item.SchoolBus != null)
            {
                int  schoolbus_id     = item.SchoolBus.Id;
                bool schoolbus_exists = _context.SchoolBuss.Any(a => a.Id == schoolbus_id);
                if (schoolbus_exists)
                {
                    SchoolBus schoolbus = _context.SchoolBuss.First(a => a.Id == schoolbus_id);
                    item.SchoolBus = schoolbus;
                }
                else
                {
                    item.SchoolBus = null;
                }
            }

            var exists = _context.Inspections.Any(a => a.Id == id);

            if (exists && id == item.Id)
            {
                _context.Inspections.Update(item);
                // Save the changes
                _context.SaveChanges();
                return(new ObjectResult(item));
            }
            else
            {
                // record not found
                return(new StatusCodeResult(404));
            }
        }
Exemple #9
0
        /// <summary>
        /// Utility function used by the owner view service
        /// </summary>
        /// <param name="schoolBusOwnerId">Owner for which to lookup inspections</param>
        /// <returns>Date of next inspection, or null if there is none</returns>
        private DateTime?GetNextInspectionDate(int schoolBusOwnerId)
        {
            DateTime?result = null;

            // next inspection is drawn from the schoolbus table
            bool exists = _context.SchoolBuss.Any(x => x.SchoolBusOwner.Id == schoolBusOwnerId && x.NextInspectionDate != null && x.Status.ToLower() == "active");

            if (exists)
            {
                SchoolBus schoolbus = _context.SchoolBuss.Where(x => x.SchoolBusOwner.Id == schoolBusOwnerId && x.NextInspectionDate != null && x.Status.ToLower() == "active")
                                      .OrderByDescending(x => x.NextInspectionDate)
                                      .First();
                result = schoolbus.NextInspectionDate;
            }
            return(result);
        }
        /// <summary>
        ///
        /// </summary>

        /// <param name="id">id of Inspection to delete</param>
        /// <param name="isAdmin">is current user has permission of ADMIN</param>
        ///
        /// <response code="200">OK</response>
        /// <response code="404">Inspection not found</response>

        public virtual IActionResult InspectionsIdDeletePostAsync(int id, bool isAdmin)
        {
            var exists = _context.Inspections.Any(a => a.Id == id);

            if (exists)
            {
                var item = _context.Inspections.Include(x => x.SchoolBus).First(a => a.Id == id);
                // Delete Inspection has special behavior.
                // By design, an Inspector is only able to delete an Inspection 24 hours after it has been entered.
                // Also, the related Schoolbus will be updated with the value of the PreviousNextInspectionDate and PreviousNextInspectionType fields.

                // first check to see if we are allowed to delete.
                if (item.CreatedDate > DateTime.UtcNow.AddDays(-1) || isAdmin)
                {
                    // update the Schoolbus record.
                    if (item.SchoolBus != null)
                    {
                        int schoolbusId = item.SchoolBus.Id;

                        bool schoolbus_exists = _context.SchoolBuss.Any(x => x.Id == schoolbusId);
                        if (schoolbus_exists)
                        {
                            SchoolBus schoolbus = _context.SchoolBuss.First(x => x.Id == schoolbusId);
                            schoolbus.NextInspectionDate     = item.PreviousNextInspectionDate;
                            schoolbus.NextInspectionTypeCode = item.PreviousNextInspectionTypeCode;
                            _context.Update(schoolbus);
                        }
                    }

                    _context.Inspections.Remove(item);

                    // Save the changes
                    _context.SaveChanges();
                    return(new ObjectResult(item));
                }
                else
                {
                    // forbidden
                    return(new StatusCodeResult(403));
                }
            }
            else
            {
                // record not found
                return(new StatusCodeResult(404));
            }
        }
Exemple #11
0
        /// <summary>
        /// Updates a single school bus object
        /// </summary>
        /// <remarks></remarks>
        /// <param name="id">Id of SchoolBus to fetch</param>
        /// <response code="200">OK</response>
        /// <response code="404">Not Found</response>

        public virtual IActionResult SchoolbusesIdPutAsync(int id, SchoolBus body)
        {
            var exists = _context.SchoolBuss.Any(a => a.Id == id);

            if (exists && id == body.Id)
            {
                _context.SchoolBuss.Update(body);
                // Save the changes
                _context.SaveChanges();
                return(new ObjectResult(body));
            }
            else
            {
                // record not found
                return(new StatusCodeResult(404));
            }
        }
Exemple #12
0
        /// <summary>
        ///
        /// </summary>
        /// <remarks>Returns notes for a particular SchoolBus.</remarks>
        /// <param name="id">id of SchoolBus to fetch notes for</param>
        /// <response code="200">OK</response>
        /// <response code="404">SchoolBus not found</response>

        public virtual IActionResult SchoolbusesIdNotesGetAsync(int id)
        {
            bool exists = _context.SchoolBuss.Any(a => a.Id == id);

            if (exists)
            {
                SchoolBus schoolBus = _context.SchoolBuss
                                      .Include(x => x.Notes)
                                      .First(a => a.Id == id);
                var result = schoolBus.Notes;
                return(new ObjectResult(result));
            }
            else
            {
                // record not found
                return(new StatusCodeResult(404));
            }
        }
Exemple #13
0
        /// <summary>
        ///
        /// </summary>
        /// <remarks>Returns attachments for a particular SchoolBus</remarks>
        /// <param name="id">id of SchoolBus to fetch attachments for</param>
        /// <response code="200">OK</response>
        /// <response code="404">SchoolBus not found</response>

        public virtual IActionResult SchoolbusesIdAttachmentsGetAsync(int id)
        {
            bool exists = _context.SchoolBuss.Any(a => a.Id == id);

            if (exists)
            {
                SchoolBus schoolBus = _context.SchoolBuss
                                      .Include(x => x.Attachments)
                                      .First(a => a.Id == id);
                var result = MappingExtensions.GetAttachmentListAsViewModel(schoolBus.Attachments);
                return(new ObjectResult(result));
            }
            else
            {
                // record not found
                return(new StatusCodeResult(404));
            }
        }
Exemple #14
0
        /// <summary>
        /// Updates a single school bus object
        /// </summary>
        /// <remarks></remarks>
        /// <param name="id">Id of SchoolBus to fetch</param>
        /// <response code="200">OK</response>
        /// <response code="404">Not Found</response>

        public virtual IActionResult SchoolbusesIdPutAsync(int id, SchoolBus item)
        {
            // adjust school bus owner
            AdjustSchoolBus(item);

            bool exists = _context.SchoolBuss.Any(a => a.Id == id);

            if (exists && id == item.Id)
            {
                _context.SchoolBuss.Update(item);
                // Save the changes
                _context.SaveChanges();
                return(new ObjectResult(item));
            }
            else
            {
                // record not found
                return(new StatusCodeResult(404));
            }
        }
Exemple #15
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="item"></param>
        /// <response code="201">SchoolBus created</response>
        public virtual IActionResult SchoolbusesPostAsync(SchoolBus item)
        {
            // adjust school bus owner
            AdjustSchoolBus(item);

            bool exists = _context.SchoolBuss.Any(a => a.Id == item.Id);

            if (exists)
            {
                _context.SchoolBuss.Update(item);
                // Save the changes
            }
            else
            {
                // record not found
                _context.SchoolBuss.Add(item);
            }

            _context.SaveChanges();
            return(new ObjectResult(item));
        }
Exemple #16
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="id">id of Inspection to delete</param>
        /// <response code="200">OK</response>
        /// <response code="404">Inspection not found</response>
        public virtual IActionResult InspectionsIdDeletePostAsync(int id)
        {
            // Delete Inspection has special behavior.
            // By design, an Inspector is only able to delete an Inspection 24 hours after it has been entered.
            // Admin user still can delete it any time.
            // Also, the related Schoolbus will be updated with the value of the PreviousNextInspectionDate and PreviousNextInspectionType fields.

            if (!_context.Inspections.Any(a => a.Id == id))
            {
                return(new StatusCodeResult(404));
            }

            var item = _context.Inspections.Include(x => x.SchoolBus).First(a => a.Id == id);

            if (item.CreatedDate <= DateTime.UtcNow.AddDays(-1) && !User.IsSystemAdmin())
            {
                return(new StatusCodeResult(403));
            }

            // update the Schoolbus record.
            if (item.SchoolBus != null)
            {
                int schoolbusId = item.SchoolBus.Id;

                bool schoolbus_exists = _context.SchoolBuss.Any(x => x.Id == schoolbusId);
                if (schoolbus_exists)
                {
                    SchoolBus schoolbus = _context.SchoolBuss.First(x => x.Id == schoolbusId);
                    schoolbus.NextInspectionDate     = item.PreviousNextInspectionDate;
                    schoolbus.NextInspectionTypeCode = item.PreviousNextInspectionTypeCode;
                    _context.Update(schoolbus);
                }
            }

            _context.Inspections.Remove(item);

            // Save the changes
            _context.SaveChanges();
            return(new ObjectResult(item));
        }
        /// <summary>
        /// Integration test for GetAllBuses
        /// </summary>
        public async void TestBusSearch()
        {
            //setup test
            // create a district
            var      request    = new HttpRequestMessage(HttpMethod.Post, "/api/districts");
            District district   = new District();
            string   jsonString = district.ToJson();

            request.Content = new StringContent(jsonString, Encoding.UTF8, "application/json");
            var response = await _client.SendAsync(request);

            response.EnsureSuccessStatusCode();

            // parse as JSON.
            jsonString = await response.Content.ReadAsStringAsync();

            district = JsonConvert.DeserializeObject <District>(jsonString);
            var district_id = district.Id;


            // create a schoolbus owner.
            request = new HttpRequestMessage(HttpMethod.Post, "/api/schoolbusowners");
            SchoolBusOwner schoolBusOwner = new SchoolBusOwner();

            jsonString      = schoolBusOwner.ToJson();
            request.Content = new StringContent(jsonString, Encoding.UTF8, "application/json");
            response        = await _client.SendAsync(request);

            response.EnsureSuccessStatusCode();

            // parse as JSON.
            jsonString = await response.Content.ReadAsStringAsync();

            schoolBusOwner = JsonConvert.DeserializeObject <SchoolBusOwner>(jsonString);
            var schoolBusOwner_id = schoolBusOwner.Id;

            // create a bus
            request = new HttpRequestMessage(HttpMethod.Post, "/api/schoolbuses");

            // create a new schoolbus.
            SchoolBus schoolbus = new SchoolBus();

            schoolbus.Status         = "Active";
            schoolbus.District       = district;
            schoolbus.SchoolBusOwner = schoolBusOwner;
            schoolbus.VehicleIdentificationNumber = "1234";
            schoolbus.LicencePlateNumber          = "12345";
            DateTime nextInspection = DateTime.UtcNow;

            schoolbus.NextInspectionDate = nextInspection;

            jsonString = schoolbus.ToJson();

            request.Content = new StringContent(jsonString, Encoding.UTF8, "application/json");

            response = await _client.SendAsync(request);

            response.EnsureSuccessStatusCode();

            // parse as JSON.
            jsonString = await response.Content.ReadAsStringAsync();

            schoolbus = JsonConvert.DeserializeObject <SchoolBus>(jsonString);
            // get the id
            var id = schoolbus.Id;

            // make a change.
            string testStatus = "1";

            schoolbus.Status = "Active";
            // now do an update.

            request         = new HttpRequestMessage(HttpMethod.Put, "/api/schoolbuses/" + id);
            request.Content = new StringContent(schoolbus.ToJson(), Encoding.UTF8, "application/json");
            response        = await _client.SendAsync(request);

            response.EnsureSuccessStatusCode();

            // do a get.
            request  = new HttpRequestMessage(HttpMethod.Get, "/api/schoolbuses/" + id);
            response = await _client.SendAsync(request);

            response.EnsureSuccessStatusCode();

            // parse as JSON.
            jsonString = await response.Content.ReadAsStringAsync();

            schoolbus = JsonConvert.DeserializeObject <SchoolBus>(jsonString);

            // test the search

            var parametersToAdd = new System.Collections.Generic.Dictionary <string, string> {
                { "district", "[" + district_id + "]" }
            };

            SchoolBus[] searchresults = await SearchHelper(parametersToAdd);

            Assert.NotNull(searchresults);
            Assert.NotEqual(searchresults.Length, 0);
            bool found = false;

            foreach (SchoolBus item in searchresults)
            {
                if (item.Id == id)
                {
                    found = true;
                }
            }

            Assert.Equal(found, true);

            parametersToAdd = new System.Collections.Generic.Dictionary <string, string> {
                { "owner", "" + schoolBusOwner_id }
            };
            searchresults = await SearchHelper(parametersToAdd);

            Assert.NotNull(searchresults);
            Assert.NotEqual(searchresults.Length, 0);
            found = false;
            foreach (SchoolBus item in searchresults)
            {
                if (item.Id == id)
                {
                    found = true;
                }
            }

            Assert.Equal(found, true);

            parametersToAdd = new System.Collections.Generic.Dictionary <string, string> {
                { "vin", "1234" }
            };
            searchresults = await SearchHelper(parametersToAdd);

            Assert.NotNull(searchresults);
            Assert.NotEqual(searchresults.Length, 0);
            found = false;
            foreach (SchoolBus item in searchresults)
            {
                if (item.Id == id)
                {
                    found = true;
                }
            }

            Assert.Equal(found, true);

            parametersToAdd = new System.Collections.Generic.Dictionary <string, string> {
                { "plate", "12345" }
            };
            searchresults = await SearchHelper(parametersToAdd);

            Assert.NotNull(searchresults);
            Assert.NotEqual(searchresults.Length, 0);
            found = false;
            foreach (SchoolBus item in searchresults)
            {
                if (item.Id == id)
                {
                    found = true;
                }
            }

            Assert.Equal(found, true);

            // now test the owner view.

            request  = new HttpRequestMessage(HttpMethod.Get, "/api/schoolbusowners/" + schoolBusOwner_id + "/view");
            response = await _client.SendAsync(request);

            response.EnsureSuccessStatusCode();

            // parse as JSON.
            jsonString = await response.Content.ReadAsStringAsync();

            SchoolBusOwnerViewModel model = JsonConvert.DeserializeObject <SchoolBusOwnerViewModel>(jsonString);

            // should be one bus.
            Assert.Equal(model.NumberOfBuses, 1);
            Assert.Equal(model.NextInspectionDate.Value.Hour, nextInspection.Hour);
            Assert.Equal(model.NextInspectionDate.Value.Minute, nextInspection.Minute);
            Assert.Equal(model.NextInspectionDate.Value.Second, nextInspection.Second);

            // teardown
            request  = new HttpRequestMessage(HttpMethod.Post, "/api/schoolbuses/" + id + "/delete");
            response = await _client.SendAsync(request);

            response.EnsureSuccessStatusCode();

            // should get a 404 if we try a get now.
            request  = new HttpRequestMessage(HttpMethod.Get, "/api/schoolbuses/" + id);
            response = await _client.SendAsync(request);

            Assert.Equal(response.StatusCode, HttpStatusCode.NotFound);

            // cleanup service area.

            request  = new HttpRequestMessage(HttpMethod.Post, "/api/districts/" + district_id + "/delete");
            response = await _client.SendAsync(request);

            response.EnsureSuccessStatusCode();

            // should get a 404 if we try a get now.
            request  = new HttpRequestMessage(HttpMethod.Get, "/api/districts/" + district_id);
            response = await _client.SendAsync(request);

            Assert.Equal(response.StatusCode, HttpStatusCode.NotFound);

            // cleanup schoolbus owner
            request  = new HttpRequestMessage(HttpMethod.Post, "/api/schoolbusowners/" + schoolBusOwner_id + "/delete");
            response = await _client.SendAsync(request);

            response.EnsureSuccessStatusCode();

            // should get a 404 if we try a get now.
            request  = new HttpRequestMessage(HttpMethod.Get, "/api/schoolbusowners/" + schoolBusOwner_id);
            response = await _client.SendAsync(request);

            Assert.Equal(response.StatusCode, HttpStatusCode.NotFound);
        }
Exemple #18
0
        /// <summary>
        /// Adjust a SchoolBus item to ensure child object data is in place correctly
        /// </summary>
        /// <param name="item"></param>
        private void AdjustSchoolBus(SchoolBus item)
        {
            if (item != null)
            {
                if (item.SchoolBusOwner != null)
                {
                    int  school_bus_owner_id     = item.SchoolBusOwner.Id;
                    bool school_bus_owner_exists = _context.SchoolBusOwners.Any(a => a.Id == school_bus_owner_id);
                    if (school_bus_owner_exists)
                    {
                        SchoolBusOwner school_bus_owner = _context.SchoolBusOwners.First(a => a.Id == school_bus_owner_id);
                        item.SchoolBusOwner = school_bus_owner;
                    }
                    else // invalid data
                    {
                        item.SchoolBusOwner = null;
                    }
                }

                // adjust District.
                if (item.District != null)
                {
                    int district_id     = item.District.Id;
                    var district_exists = _context.ServiceAreas.Any(a => a.Id == district_id);
                    if (district_exists)
                    {
                        District district = _context.Districts.First(a => a.Id == district_id);
                        item.District = district;
                    }
                    else
                    {
                        item.District = null;
                    }
                }                // adjust school district

                if (item.SchoolDistrict != null)
                {
                    int  schoolDistrict_id     = item.SchoolDistrict.Id;
                    bool schoolDistrict_exists = _context.SchoolDistricts.Any(a => a.Id == schoolDistrict_id);
                    if (schoolDistrict_exists)
                    {
                        SchoolDistrict school_district = _context.SchoolDistricts.First(a => a.Id == schoolDistrict_id);
                        item.SchoolDistrict = school_district;
                    }
                    else
                    // invalid data
                    {
                        item.SchoolDistrict = null;
                    }
                }

                // adjust home city

                if (item.HomeTerminalCity != null)
                {
                    int  city_id     = item.HomeTerminalCity.Id;
                    bool city_exists = _context.Cities.Any(a => a.Id == city_id);
                    if (city_exists)
                    {
                        City city = _context.Cities.First(a => a.Id == city_id);
                        item.HomeTerminalCity = city;
                    }
                    else
                    // invalid data
                    {
                        item.HomeTerminalCity = null;
                    }
                }

                // adjust inspector

                if (item.Inspector != null)
                {
                    int  inspector_id     = item.Inspector.Id;
                    bool inspector_exists = _context.Users.Any(a => a.Id == inspector_id);
                    if (inspector_exists)
                    {
                        User inspector = _context.Users.First(a => a.Id == inspector_id);
                        item.Inspector = inspector;
                    }
                    else
                    // invalid data
                    {
                        item.Inspector = null;
                    }
                }

                // adjust CCWData

                if (item.CCWData != null)
                {
                    int  ccwdata_id     = item.CCWData.Id;
                    bool ccwdata_exists = _context.CCWDatas.Any(a => a.Id == ccwdata_id);
                    if (ccwdata_exists)
                    {
                        CCWData ccwdata = _context.CCWDatas.First(a => a.Id == ccwdata_id);
                        item.CCWData = ccwdata;
                    }
                    else
                    // invalid data
                    {
                        item.CCWData = null;
                    }
                }
            }
        }
Exemple #19
0
        /// <summary>
        /// Returns a PDF Permit
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public virtual IActionResult SchoolbusesIdPdfpermitGetAsync(int id)
        {
            FileContentResult result = null;
            bool exists = _context.SchoolBuss.Any(a => a.Id == id);

            if (exists)
            {
                SchoolBus schoolBus = _context.SchoolBuss
                                      .Include(x => x.CCWData)
                                      .Include(x => x.SchoolBusOwner.PrimaryContact)
                                      .Include(x => x.SchoolDistrict)
                                      .First(a => a.Id == id);

                // construct the view model.

                PermitViewModel permitViewModel = new PermitViewModel();

                // only do the ICBC fields if the CCW data is available.

                if (schoolBus.CCWData != null)
                {
                    permitViewModel.IcbcMake                    = schoolBus.CCWData.ICBCMake;
                    permitViewModel.IcbcModelYear               = schoolBus.CCWData.ICBCModelYear;
                    permitViewModel.IcbcRegistrationNumber      = schoolBus.CCWData.ICBCRegistrationNumber;
                    permitViewModel.VehicleIdentificationNumber = schoolBus.CCWData.ICBCVehicleIdentificationNumber;
                }
                permitViewModel.PermitIssueDate = null;
                if (schoolBus.PermitIssueDate != null)
                {
                    // Since the PDF template is raw HTML and won't convert a date object, we must adjust the time zone here.
                    TimeZoneInfo tzi = null;
                    try
                    {
                        // try the IANA timzeone first.
                        tzi = TimeZoneInfo.FindSystemTimeZoneById("America / Vancouver");
                    }
                    catch (Exception e)
                    {
                        tzi = null;
                    }

                    if (tzi == null)
                    {
                        try
                        {
                            tzi = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
                        }
                        catch (Exception e)
                        {
                            tzi = null;
                        }
                    }
                    DateTime dto = DateTime.UtcNow;
                    if (tzi != null)
                    {
                        dto = TimeZoneInfo.ConvertTime((DateTime)schoolBus.PermitIssueDate, tzi);
                    }
                    else
                    {
                        dto = (DateTime)schoolBus.PermitIssueDate;
                    }
                    permitViewModel.PermitIssueDate = dto.ToString("yyyy-MM-dd");
                }

                permitViewModel.PermitNumber     = schoolBus.PermitNumber;
                permitViewModel.RestrictionsText = schoolBus.RestrictionsText;

                if (schoolBus.SchoolBusOwner != null && schoolBus.SchoolBusOwner.PrimaryContact != null)
                {
                    permitViewModel.SchoolBusOwnerAddressLine1 = schoolBus.SchoolBusOwner.PrimaryContact.Address1;
                    permitViewModel.SchoolBusOwnerAddressLine2 = schoolBus.SchoolBusOwner.PrimaryContact.Address2;
                    permitViewModel.SchoolBusOwnerName         = schoolBus.SchoolBusOwner.Name;
                }
                permitViewModel.SchoolBusSeatingCapacity = schoolBus.SchoolBusSeatingCapacity;
                if (schoolBus.SchoolDistrict != null)
                {
                    permitViewModel.SchoolDistrictshortName = schoolBus.SchoolDistrict.ShortName;
                }
                string payload = JsonConvert.SerializeObject(permitViewModel);

                // pass the request on to the PDF Micro Service
                string pdfHost = Configuration["PDF_SERVICE_NAME"];

                string targetUrl = pdfHost + "/api/PDF/GetPDF";

                // call the microservice
                try
                {
                    HttpClient client = new HttpClient();

                    var request = new HttpRequestMessage(HttpMethod.Post, targetUrl);
                    request.Content = new StringContent(payload, Encoding.UTF8, "application/json");

                    request.Headers.Clear();
                    // transfer over the request headers.
                    foreach (var item in Request.Headers)
                    {
                        string key   = item.Key;
                        string value = item.Value;
                        request.Headers.Add(key, value);
                    }

                    Task <HttpResponseMessage> responseTask = client.SendAsync(request);
                    responseTask.Wait();

                    HttpResponseMessage response = responseTask.Result;
                    if (response.StatusCode == HttpStatusCode.OK) // success
                    {
                        var bytetask = response.Content.ReadAsByteArrayAsync();
                        bytetask.Wait();

                        result = new FileContentResult(bytetask.Result, "application/pdf");
                        result.FileDownloadName = "Permit-" + schoolBus.PermitNumber + ".pdf";
                    }
                }
                catch (Exception e)
                {
                    result = null;
                }

                // check that the result has a value
                if (result != null)
                {
                    return(result);
                }
                else
                {
                    return(new StatusCodeResult(400)); // problem occured
                }
            }
            else
            {
                // record not found
                return(new StatusCodeResult(404));
            }
        }
Exemple #20
0
        /// <summary>
        /// Integration test for GetAllBuses
        /// </summary>
        public async void TestBusSearch()
        {
            //setup test
            // create a service area.
            var         request     = new HttpRequestMessage(HttpMethod.Post, "/api/serviceareas");
            ServiceArea servicearea = new ServiceArea();
            string      jsonString  = servicearea.ToJson();

            request.Content = new StringContent(jsonString, Encoding.UTF8, "application/json");
            var response = await _client.SendAsync(request);

            response.EnsureSuccessStatusCode();

            // parse as JSON.
            jsonString = await response.Content.ReadAsStringAsync();

            servicearea = JsonConvert.DeserializeObject <ServiceArea>(jsonString);
            var servicearea_id = servicearea.Id;


            // create a schoolbus owner.
            request = new HttpRequestMessage(HttpMethod.Post, "/api/schoolbusowners");
            SchoolBusOwner schoolBusOwner = new SchoolBusOwner();

            jsonString      = schoolBusOwner.ToJson();
            request.Content = new StringContent(jsonString, Encoding.UTF8, "application/json");
            response        = await _client.SendAsync(request);

            response.EnsureSuccessStatusCode();

            // parse as JSON.
            jsonString = await response.Content.ReadAsStringAsync();

            schoolBusOwner = JsonConvert.DeserializeObject <SchoolBusOwner>(jsonString);
            var schoolBusOwner_id = schoolBusOwner.Id;

            // create a bus
            request = new HttpRequestMessage(HttpMethod.Post, "/api/schoolbuses");

            // create a new schoolbus.
            SchoolBus schoolbus = new SchoolBus();

            schoolbus.Status         = "Active";
            schoolbus.ServiceArea    = servicearea;
            schoolbus.SchoolBusOwner = schoolBusOwner;
            schoolbus.VIN            = "1234";
            schoolbus.Plate          = "12345";

            jsonString = schoolbus.ToJson();

            request.Content = new StringContent(jsonString, Encoding.UTF8, "application/json");

            response = await _client.SendAsync(request);

            response.EnsureSuccessStatusCode();

            // parse as JSON.
            jsonString = await response.Content.ReadAsStringAsync();

            schoolbus = JsonConvert.DeserializeObject <SchoolBus>(jsonString);
            // get the id
            var id = schoolbus.Id;

            // make a change.
            string testStatus = "1";

            schoolbus.Status = "Active";
            // now do an update.

            request         = new HttpRequestMessage(HttpMethod.Put, "/api/schoolbuses/" + id);
            request.Content = new StringContent(schoolbus.ToJson(), Encoding.UTF8, "application/json");
            response        = await _client.SendAsync(request);

            response.EnsureSuccessStatusCode();

            // do a get.
            request  = new HttpRequestMessage(HttpMethod.Get, "/api/schoolbuses/" + id);
            response = await _client.SendAsync(request);

            response.EnsureSuccessStatusCode();

            // parse as JSON.
            jsonString = await response.Content.ReadAsStringAsync();

            schoolbus = JsonConvert.DeserializeObject <SchoolBus>(jsonString);

            // test the search

            var parametersToAdd = new System.Collections.Generic.Dictionary <string, string> {
                { "servicearea", "[" + servicearea_id + "]" }
            };

            SchoolBus[] searchresults = await SearchHelper(parametersToAdd);

            Assert.NotNull(searchresults);
            Assert.NotEqual(searchresults.Length, 0);
            bool found = false;

            foreach (SchoolBus item in searchresults)
            {
                if (item.Id == id)
                {
                    found = true;
                }
            }

            Assert.Equal(found, true);

            parametersToAdd = new System.Collections.Generic.Dictionary <string, string> {
                { "owner", "" + schoolBusOwner_id }
            };
            searchresults = await SearchHelper(parametersToAdd);

            Assert.NotNull(searchresults);
            Assert.NotEqual(searchresults.Length, 0);
            found = false;
            foreach (SchoolBus item in searchresults)
            {
                if (item.Id == id)
                {
                    found = true;
                }
            }

            Assert.Equal(found, true);

            parametersToAdd = new System.Collections.Generic.Dictionary <string, string> {
                { "vin", "1234" }
            };
            searchresults = await SearchHelper(parametersToAdd);

            Assert.NotNull(searchresults);
            Assert.NotEqual(searchresults.Length, 0);
            found = false;
            foreach (SchoolBus item in searchresults)
            {
                if (item.Id == id)
                {
                    found = true;
                }
            }

            Assert.Equal(found, true);

            parametersToAdd = new System.Collections.Generic.Dictionary <string, string> {
                { "plate", "12345" }
            };
            searchresults = await SearchHelper(parametersToAdd);

            Assert.NotNull(searchresults);
            Assert.NotEqual(searchresults.Length, 0);
            found = false;
            foreach (SchoolBus item in searchresults)
            {
                if (item.Id == id)
                {
                    found = true;
                }
            }

            Assert.Equal(found, true);


            // teardown
            request  = new HttpRequestMessage(HttpMethod.Post, "/api/schoolbuses/" + id + "/delete");
            response = await _client.SendAsync(request);

            response.EnsureSuccessStatusCode();

            // should get a 404 if we try a get now.
            request  = new HttpRequestMessage(HttpMethod.Get, "/api/schoolbuses/" + id);
            response = await _client.SendAsync(request);

            Assert.Equal(response.StatusCode, HttpStatusCode.NotFound);

            // cleanup service area.

            request  = new HttpRequestMessage(HttpMethod.Post, "/api/serviceareas/" + servicearea_id + "/delete");
            response = await _client.SendAsync(request);

            response.EnsureSuccessStatusCode();

            // should get a 404 if we try a get now.
            request  = new HttpRequestMessage(HttpMethod.Get, "/api/serviceareas/" + servicearea_id);
            response = await _client.SendAsync(request);

            Assert.Equal(response.StatusCode, HttpStatusCode.NotFound);

            // cleanup schoolbus owner

            request  = new HttpRequestMessage(HttpMethod.Post, "/api/schoolbusowners/" + schoolBusOwner_id + "/delete");
            response = await _client.SendAsync(request);

            response.EnsureSuccessStatusCode();

            // should get a 404 if we try a get now.
            request  = new HttpRequestMessage(HttpMethod.Get, "/api/schoolbusowners/" + schoolBusOwner_id);
            response = await _client.SendAsync(request);

            Assert.Equal(response.StatusCode, HttpStatusCode.NotFound);
        }
Exemple #21
0
        /// <summary>
        /// Hangfire job to refresh existing data.
        /// </summary>
        /// <param name="connectionString"></param>
        /// <param name="Configuration"></param>
        public static void UpdateCCWJob(string connectionString, string cCW_userId, string cCW_guid, string cCW_directory, string ccwHost)
        {
            // sanity check
            if (connectionString != null && cCW_userId != null && cCW_guid != null && cCW_directory != null && ccwHost != null)
            {
                // make a database connection and see if there are any records that need to be updated.
                DbContextOptionsBuilder <DbAppContext> options = new DbContextOptionsBuilder <DbAppContext>();
                options.UseNpgsql(connectionString);
                DbAppContext context = new DbAppContext(null, options.Options);

                // first get a few metrics.  we only want to update a max of 1% the database per day.
                int databaseTotal = context.CCWDatas.Count();

                int dailyTotal = context.CCWDatas
                                 .Where(x => x.LastUpdateTimestamp < DateTime.UtcNow.AddDays(-1))
                                 .Select(x => x)
                                 .Count();

                if (databaseTotal > 0 && dailyTotal < databaseTotal / 100)
                {
                    // make a database connection and see if there are any records that are missing the CCW link.
                    var data = context.CCWDatas
                               .OrderBy(x => x.LastUpdateTimestamp)
                               .FirstOrDefault(x => x.LastUpdateTimestamp < DateTime.UtcNow.AddDays(-1));

                    if (data != null)
                    {
                        // get the data for the request from the result of the database query.
                        string regi = data.ICBCRegistrationNumber;
                        string vin  = data.ICBCVehicleIdentificationNumber;
                        // plate is excluded from the batch update because it can be shared.
                        string plate = null;

                        // Fetch the record.
                        CCWData cCWData = FetchCCW(regi, vin, plate, cCW_userId, cCW_guid, cCW_directory, ccwHost);

                        if (cCWData == null) // fetch did not work, but we don't want it to fire again, so update the timestamp.
                        {
                            // ensure that the record is touched in the database
                            data.LastUpdateTimestamp = DateTime.UtcNow;
                            //update records in SchoolBus table
                            bool exists = context.SchoolBuss.Any(x => x.CCWDataId == cCWData.Id);
                            if (exists)
                            {
                                SchoolBus bus = context.SchoolBuss.First(a => a.CCWDataId == cCWData.Id);
                                if (cCWData.ICBCRegistrationNumber != null && bus.ICBCRegistrationNumber != null && !cCWData.ICBCRegistrationNumber.Equals(bus.ICBCRegistrationNumber))
                                {
                                    bus.ICBCRegistrationNumber = cCWData.ICBCRegistrationNumber;
                                }

                                if (cCWData.ICBCVehicleIdentificationNumber != null && bus.VehicleIdentificationNumber != null && !cCWData.ICBCVehicleIdentificationNumber.Equals(bus.VehicleIdentificationNumber))
                                {
                                    bus.VehicleIdentificationNumber = cCWData.ICBCVehicleIdentificationNumber;
                                }

                                if (cCWData.ICBCLicencePlateNumber != null && bus.LicencePlateNumber != null && !cCWData.ICBCLicencePlateNumber.Equals(bus.LicencePlateNumber))
                                {
                                    bus.LicencePlateNumber = cCWData.ICBCLicencePlateNumber;
                                }

                                context.SchoolBuss.Update(bus);
                            }

                            context.CCWDatas.Update(data);
                            context.SaveChanges();
                        }
                    }
                }
            }
        }
 public virtual IActionResult AddBus([FromBody] SchoolBus item)
 {
     return(this._service.AddBusAsync(item));
 }
 public virtual IActionResult SchoolbusesPost([FromBody] SchoolBus item)
 {
     return(this._service.SchoolbusesPostAsync(item));
 }
 public virtual IActionResult SchoolbusesIdPut([FromRoute] int id, [FromBody] SchoolBus item)
 {
     return(this._service.SchoolbusesIdPutAsync(id, item));
 }
        /// <summary>
        /// Integration test for FindBusById
        /// </summary>
        public async void TestSchoolBuses()
        {
            // create a district.
            var      request    = new HttpRequestMessage(HttpMethod.Post, "/api/districts");
            District district   = new District();
            string   jsonString = district.ToJson();

            request.Content = new StringContent(jsonString, Encoding.UTF8, "application/json");
            var response = await _client.SendAsync(request);

            response.EnsureSuccessStatusCode();

            // parse as JSON.
            jsonString = await response.Content.ReadAsStringAsync();

            district = JsonConvert.DeserializeObject <District>(jsonString);
            var district_id = district.Id;


            // create a schoolbus owner.
            request = new HttpRequestMessage(HttpMethod.Post, "/api/schoolbusowners");
            SchoolBusOwner schoolBusOwner = new SchoolBusOwner();

            jsonString      = schoolBusOwner.ToJson();
            request.Content = new StringContent(jsonString, Encoding.UTF8, "application/json");
            response        = await _client.SendAsync(request);

            response.EnsureSuccessStatusCode();

            // parse as JSON.
            jsonString = await response.Content.ReadAsStringAsync();

            schoolBusOwner = JsonConvert.DeserializeObject <SchoolBusOwner>(jsonString);
            var schoolBusOwner_id = schoolBusOwner.Id;

            // create a bus
            request = new HttpRequestMessage(HttpMethod.Post, "/api/schoolbuses");

            // create a new schoolbus.
            SchoolBus schoolbus = new SchoolBus();

            schoolbus.Status         = "0";
            schoolbus.District       = district;
            schoolbus.SchoolBusOwner = schoolBusOwner;


            jsonString = schoolbus.ToJson();

            request.Content = new StringContent(jsonString, Encoding.UTF8, "application/json");

            response = await _client.SendAsync(request);

            response.EnsureSuccessStatusCode();

            // parse as JSON.
            jsonString = await response.Content.ReadAsStringAsync();

            schoolbus = JsonConvert.DeserializeObject <SchoolBus>(jsonString);
            // get the id
            var id = schoolbus.Id;

            // make a change.
            string testStatus = "1";

            schoolbus.Status = testStatus;
            // now do an update.

            request         = new HttpRequestMessage(HttpMethod.Put, "/api/schoolbuses/" + id);
            request.Content = new StringContent(schoolbus.ToJson(), Encoding.UTF8, "application/json");
            response        = await _client.SendAsync(request);

            response.EnsureSuccessStatusCode();

            // do a get.
            request  = new HttpRequestMessage(HttpMethod.Get, "/api/schoolbuses/" + id);
            response = await _client.SendAsync(request);

            response.EnsureSuccessStatusCode();

            // parse as JSON.
            jsonString = await response.Content.ReadAsStringAsync();

            schoolbus = JsonConvert.DeserializeObject <SchoolBus>(jsonString);

            // compare the change, should match.
            Assert.Equal(schoolbus.Status, testStatus);

            //test attachments
            request  = new HttpRequestMessage(HttpMethod.Get, "/api/schoolbuses/" + id + "/attachments");
            response = await _client.SendAsync(request);

            response.EnsureSuccessStatusCode();

            //test attachments
            request  = new HttpRequestMessage(HttpMethod.Get, "/api/schoolbuses/" + id + "/ccwdata");
            response = await _client.SendAsync(request);

            response.EnsureSuccessStatusCode();

            //test history
            request  = new HttpRequestMessage(HttpMethod.Get, "/api/schoolbuses/" + id + "/history");
            response = await _client.SendAsync(request);

            response.EnsureSuccessStatusCode();

            //test notes
            request  = new HttpRequestMessage(HttpMethod.Get, "/api/schoolbuses/" + id + "/notes");
            response = await _client.SendAsync(request);

            response.EnsureSuccessStatusCode();

            //test inspections
            request  = new HttpRequestMessage(HttpMethod.Get, "/api/schoolbuses/" + id + "/inspections");
            response = await _client.SendAsync(request);

            response.EnsureSuccessStatusCode();

            // do a delete.
            request  = new HttpRequestMessage(HttpMethod.Post, "/api/schoolbuses/" + id + "/delete");
            response = await _client.SendAsync(request);

            response.EnsureSuccessStatusCode();

            // should get a 404 if we try a get now.
            request  = new HttpRequestMessage(HttpMethod.Get, "/api/schoolbuses/" + id);
            response = await _client.SendAsync(request);

            Assert.Equal(response.StatusCode, HttpStatusCode.NotFound);

            // cleanup service area.

            request  = new HttpRequestMessage(HttpMethod.Post, "/api/districts/" + district_id + "/delete");
            response = await _client.SendAsync(request);

            response.EnsureSuccessStatusCode();

            // should get a 404 if we try a get now.
            request  = new HttpRequestMessage(HttpMethod.Get, "/api/districts/" + district_id);
            response = await _client.SendAsync(request);

            Assert.Equal(response.StatusCode, HttpStatusCode.NotFound);

            // cleanup schoolbus owner

            request  = new HttpRequestMessage(HttpMethod.Post, "/api/schoolbusowners/" + schoolBusOwner_id + "/delete");
            response = await _client.SendAsync(request);

            response.EnsureSuccessStatusCode();

            // should get a 404 if we try a get now.
            request  = new HttpRequestMessage(HttpMethod.Get, "/api/schoolbusowners/" + schoolBusOwner_id);
            response = await _client.SendAsync(request);

            Assert.Equal(response.StatusCode, HttpStatusCode.NotFound);
        }
Exemple #26
0
 /// <summary>
 /// Setup the test.
 /// </summary>
 public SchoolBusModelTests()
 {
     instance = new SchoolBus();
 }
Exemple #27
0
        /// <summary>
        /// Returns a PDF Permit
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public virtual IActionResult SchoolbusesIdPdfpermitGetAsync(int id)
        {
            FileContentResult result = null;
            bool exists = _context.SchoolBuss.Any(a => a.Id == id);

            if (exists)
            {
                SchoolBus schoolBus = _context.SchoolBuss
                                      .Include(x => x.CCWData)
                                      .Include(x => x.SchoolBusOwner.PrimaryContact)
                                      .Include(x => x.SchoolDistrict)
                                      .First(a => a.Id == id);

                // construct the view model.

                PermitViewModel permitViewModel = new PermitViewModel();

                // only do the ICBC fields if the CCW data is available.

                if (schoolBus.CCWData != null)
                {
                    permitViewModel.IcbcMake                    = schoolBus.CCWData.ICBCMake;
                    permitViewModel.IcbcModelYear               = schoolBus.CCWData.ICBCModelYear;
                    permitViewModel.IcbcRegistrationNumber      = schoolBus.CCWData.ICBCRegistrationNumber;
                    permitViewModel.VehicleIdentificationNumber = schoolBus.CCWData.ICBCVehicleIdentificationNumber;

                    permitViewModel.SchoolBusOwnerAddressLine1 = schoolBus.CCWData.ICBCRegOwnerAddr1;

                    // line 2 is a combination of the various fields that may contain data.
                    List <string> strings = new List <string>();
                    if (!string.IsNullOrWhiteSpace(schoolBus.CCWData.ICBCRegOwnerAddr2))
                    {
                        strings.Add(schoolBus.CCWData.ICBCRegOwnerAddr2);
                    }
                    if (!string.IsNullOrWhiteSpace(schoolBus.CCWData.ICBCRegOwnerCity))
                    {
                        strings.Add(schoolBus.CCWData.ICBCRegOwnerCity);
                    }
                    if (!string.IsNullOrWhiteSpace(schoolBus.CCWData.ICBCRegOwnerProv))
                    {
                        strings.Add(schoolBus.CCWData.ICBCRegOwnerProv);
                    }
                    if (!string.IsNullOrWhiteSpace(schoolBus.CCWData.ICBCRegOwnerPostalCode))
                    {
                        strings.Add(schoolBus.CCWData.ICBCRegOwnerPostalCode);
                    }
                    if (strings.Count > 0)
                    {
                        permitViewModel.SchoolBusOwnerAddressLine2 = String.Join(", ", strings);
                    }

                    permitViewModel.SchoolBusOwnerPostalCode = schoolBus.CCWData.ICBCRegOwnerPostalCode;
                    permitViewModel.SchoolBusOwnerProvince   = schoolBus.CCWData.ICBCRegOwnerProv;
                    permitViewModel.SchoolBusOwnerCity       = schoolBus.CCWData.ICBCRegOwnerCity;
                    permitViewModel.SchoolBusOwnerName       = schoolBus.CCWData.ICBCRegOwnerName;
                }

                permitViewModel.PermitIssueDate = schoolBus.PermitIssueDate == null ?
                                                  null : ConvertUtcToPacificTime((DateTime)schoolBus.PermitIssueDate).ToString("yyyy-MM-dd");

                permitViewModel.PermitNumber                 = schoolBus.PermitNumber;
                permitViewModel.RestrictionsText             = schoolBus.RestrictionsText;
                permitViewModel.SchoolBusMobilityAidCapacity = schoolBus.MobilityAidCapacity.ToString();
                permitViewModel.UnitNumber               = schoolBus.UnitNumber;
                permitViewModel.PermitClassCode          = schoolBus.PermitClassCode;
                permitViewModel.BodyTypeCode             = schoolBus.BodyTypeCode;
                permitViewModel.SchoolBusSeatingCapacity = schoolBus.SchoolBusSeatingCapacity;

                if (schoolBus.SchoolDistrict != null)
                {
                    permitViewModel.SchoolDistrictshortName = schoolBus.SchoolDistrict.ShortName;
                }

                string payload = JsonConvert.SerializeObject(permitViewModel);

                // pass the request on to the PDF Micro Service
                string pdfHost = Configuration["PDF_SERVICE_NAME"];

                string targetUrl = pdfHost + "/api/PDF/GetPDF";

                // call the microservice

                HttpClient client = new HttpClient();
                try
                {
                    var request = new HttpRequestMessage(HttpMethod.Post, targetUrl);
                    request.Content = new StringContent(payload, Encoding.UTF8, "application/json");

                    request.Headers.Clear();
                    // transfer over the request headers.
                    foreach (var item in Request.Headers)
                    {
                        string key   = item.Key;
                        string value = item.Value;
                        request.Headers.Add(key, value);
                    }

                    Task <HttpResponseMessage> responseTask = client.SendAsync(request);
                    responseTask.Wait();
                    HttpResponseMessage response = responseTask.Result;
                    if (response.StatusCode == HttpStatusCode.OK) // success
                    {
                        var bytetask = response.Content.ReadAsByteArrayAsync();
                        bytetask.Wait();
                        result = new FileContentResult(bytetask.Result, "application/pdf");
                        result.FileDownloadName = "Permit-" + schoolBus.PermitNumber + ".pdf";
                    }
                }
                catch (Exception e)
                {
                    result = null;
                    Console.WriteLine(e.ToString());
                }

                finally
                {
                    if (client != null)
                    {
                        try
                        {
                            client.Dispose();
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine(e.ToString());
                        }
                    }
                }

                // check that the result has a value
                if (result != null)
                {
                    return(result);
                }
                else
                {
                    return(new StatusCodeResult(503));
                }
            }
            else
            {
                // record not found
                return(new StatusCodeResult(404));
            }
        }