public static Aatf CreateAatf(DatabaseWrapper database, Organisation organisation, short year = 2019, bool hasLocalArea = true, bool hasPanArea = true, string name = null)
        {
            LocalArea localArea = null;

            if (hasLocalArea)
            {
                localArea = database.WeeeContext.LocalAreas.First();
            }

            PanArea panArea = null;

            if (hasPanArea)
            {
                panArea = database.WeeeContext.PanAreas.First();
            }

            var aatfName = "aatfname";

            if (!string.IsNullOrWhiteSpace(name))
            {
                aatfName = name;
            }

            return(new Aatf(aatfName, database.WeeeContext.UKCompetentAuthorities.First(), "number", AatfStatus.Approved, organisation, CreateAatfAddress(database), AatfSize.Large, DateTime.Now, CreateDefaultContact(database.WeeeContext.Countries.First()), FacilityType.Aatf, year, localArea, panArea));
        }
Exemplo n.º 2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="RentalRequestViewModel" /> class.
        /// </summary>
        /// <param name="id">A system-generated unique identifier for a Request (required).</param>
        /// <param name="project">Project (required).</param>
        /// <param name="localArea">A foreign key reference to the system-generated unique identifier for a Local Area (required).</param>
        /// <param name="status">The status of the Rental Request - whether it in progress, completed or was cancelled. (required).</param>
        /// <param name="districtEquipmentType">A foreign key reference to the system-generated unique identifier for an Equipment Type (required).</param>
        /// <param name="equipmentCount">The number of pieces of the equipment type wanted for hire as part of this request. (required).</param>
        /// <param name="expectedHours">The expected number of rental hours for each piece equipment hired against this request, as provided by the Project Manager making the request..</param>
        /// <param name="expectedStartDate">The expected start date of each piece of equipment hired against this request, as provided by the Project Manager making the request..</param>
        /// <param name="expectedEndDate">The expected end date of each piece of equipment hired against this request, as provided by the Project Manager making the request..</param>
        /// <param name="firstOnRotationList">The first piece of equipment on the rotation list at the time of the creation of the request..</param>
        /// <param name="notes">Notes.</param>
        /// <param name="attachments">Attachments.</param>
        /// <param name="history">History.</param>
        /// <param name="rentalRequestAttachments">RentalRequestAttachments.</param>
        /// <param name="rentalRequestRotationList">RentalRequestRotationList.</param>
        public RentalRequestViewModel(int id, Project project, LocalArea localArea, string status, DistrictEquipmentType districtEquipmentType,
                                      int equipmentCount, int?expectedHours = null, DateTime?expectedStartDate = null, DateTime?expectedEndDate = null,
                                      Equipment firstOnRotationList         = null, List <Note> notes = null, List <Attachment> attachments     = null,
                                      List <History> history = null, List <RentalRequestAttachment> rentalRequestAttachments = null,
                                      List <RentalRequestRotationList> rentalRequestRotationList = null)
        {
            Id                        = id;
            Project                   = project;
            LocalArea                 = localArea;
            Status                    = status;
            DistrictEquipmentType     = districtEquipmentType;
            EquipmentCount            = equipmentCount;
            ExpectedHours             = expectedHours;
            ExpectedStartDate         = expectedStartDate;
            ExpectedEndDate           = expectedEndDate;
            FirstOnRotationList       = firstOnRotationList;
            Notes                     = notes;
            Attachments               = attachments;
            History                   = history;
            RentalRequestAttachments  = rentalRequestAttachments;
            RentalRequestRotationList = rentalRequestRotationList;

            // calculate the Yes Count based on the RentalRequestList
            CalculateYesCount();
        }
Exemplo n.º 3
0
        private Owner CreateOwner(LocalArea localArea, string name)
        {
            Owner result = new Owner();

            var request = new HttpRequestMessage(HttpMethod.Post, "/api/owners");

            result.OrganizationName = name;
            result.LocalArea        = localArea;

            string jsonString = result.ToJson();

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

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

            responseTask.Wait();

            HttpResponseMessage response = responseTask.Result;

            response.EnsureSuccessStatusCode();

            Task <string> stringTask = response.Content.ReadAsStringAsync();

            stringTask.Wait();

            // parse as JSON.
            jsonString = stringTask.Result;
            result     = JsonConvert.DeserializeObject <Owner>(jsonString);

            return(result);
        }
Exemplo n.º 4
0
 private void AdjustRecord(LocalArea item)
 {
     if (item != null && item.ServiceArea != null)
     {
         item.ServiceArea = _context.ServiceAreas.FirstOrDefault(a => a.Id == item.ServiceArea.Id);
     }
 }
Exemplo n.º 5
0
        /// <summary>
        /// Test the owner search.  Specifically test that searches for two items on a multi-select show the expected number of results.
        /// </summary>
        ///
        public async Task TestOwnerSearch()
        {
            /* Test plan:
             * 1. create 3 local areas.
             * 2. put 2 owners in each area.
             * 3. search for owners in local area 1 - should get 2 results.
             * 4. search for owners in local area 2 - should get 2 results.
             * 5. search for owners in local areas 1,2 - should get 4 results.
             * remove the owners
             * remove the local areas.
             */

            string initialName = "InitialName";

            // create 3 local areas.

            ServiceArea serviceArea = CreateServiceArea(initialName);
            LocalArea   localArea1  = CreateLocalArea(serviceArea, "Local Area 1");
            LocalArea   localArea2  = CreateLocalArea(serviceArea, "Local Area 2");
            LocalArea   localArea3  = CreateLocalArea(serviceArea, "Local Area 3");

            // create 2 owners in each.

            Owner owner1 = CreateOwner(localArea1, "Owner 1");
            Owner owner2 = CreateOwner(localArea1, "Owner 2");
            Owner owner3 = CreateOwner(localArea2, "Owner 3");
            Owner owner4 = CreateOwner(localArea2, "Owner 4");
            Owner owner5 = CreateOwner(localArea3, "Owner 5");
            Owner owner6 = CreateOwner(localArea3, "Owner 6");

            Owner[] searchresults = await OwnerSearchHelper("?localareas=" + localArea2.Id);

            Assert.Equal(2, searchresults.Length);

            searchresults = await OwnerSearchHelper("?localareas=" + localArea2.Id);

            Assert.Equal(2, searchresults.Length);

            searchresults = await OwnerSearchHelper("?localareas=" + localArea1.Id + "%2C" + localArea2.Id);

            Assert.Equal(4, searchresults.Length);

            searchresults = await OwnerSearchHelper("?owner=" + owner1.Id);

            Assert.Single(searchresults);

            // cleanup
            DeleteOwner(owner1);
            DeleteOwner(owner2);
            DeleteOwner(owner3);
            DeleteOwner(owner4);
            DeleteOwner(owner5);
            DeleteOwner(owner6);

            DeleteLocalArea(localArea1);
            DeleteLocalArea(localArea2);
            DeleteLocalArea(localArea3);

            DeleteServiceArea(serviceArea);
        }
Exemplo n.º 6
0
        /// <summary>
        /// Import Local Areas
        /// </summary>
        /// <param name="performContext"></param>
        /// <param name="dbContext"></param>
        /// <param name="fileLocation"></param>
        /// <param name="systemId"></param>
        public static void Import(PerformContext performContext, DbAppContext dbContext, string fileLocation, string systemId)
        {
            // check the start point. If startPoint == sigId then it is already completed
            int startPoint = ImportUtility.CheckInterMapForStartPoint(dbContext, OldTableProgress, BcBidImport.SigId, NewTable);

            if (startPoint == BcBidImport.SigId)    // this means the import job it has done today is complete for all the records in the xml file.
            {
                performContext.WriteLine("*** Importing " + XmlFileName + " is complete from the former process ***");
                return;
            }

            try
            {
                string rootAttr = "ArrayOf" + OldTable;

                // create Processer progress indicator
                performContext.WriteLine("Processing " + OldTable);
                IProgressBar progress = performContext.WriteProgressBar();
                progress.SetValue(0);

                // create serializer and serialize xml file
                XmlSerializer ser          = new XmlSerializer(typeof(Area[]), new XmlRootAttribute(rootAttr));
                MemoryStream  memoryStream = ImportUtility.MemoryStreamGenerator(XmlFileName, OldTable, fileLocation, rootAttr);
                Area[]        legacyItems  = (Area[])ser.Deserialize(memoryStream);

                int ii = startPoint;

                // skip the portion already processed
                if (startPoint > 0)
                {
                    legacyItems = legacyItems.Skip(ii).ToArray();
                }

                Debug.WriteLine("Importing LocalArea Data. Total Records: " + legacyItems.Length);

                foreach (Area item in legacyItems.WithProgress(progress))
                {
                    // see if we have this one already
                    ImportMap importMap = dbContext.ImportMaps.FirstOrDefault(x => x.OldTable == OldTable && x.OldKey == item.Area_Id.ToString());

                    // new entry
                    if (importMap == null && item.Area_Id > 0)
                    {
                        LocalArea localArea = null;
                        CopyToInstance(dbContext, item, ref localArea, systemId);
                        ImportUtility.AddImportMap(dbContext, OldTable, item.Area_Id.ToString(), NewTable, localArea.Id);
                    }
                }

                performContext.WriteLine("*** Importing " + XmlFileName + " is Done ***");
                ImportUtility.AddImportMapForProgress(dbContext, OldTableProgress, BcBidImport.SigId.ToString(), BcBidImport.SigId, NewTable);
                dbContext.SaveChangesForImport();
            }
            catch (Exception e)
            {
                performContext.WriteLine("*** ERROR ***");
                performContext.WriteLine(e.ToString());
                throw;
            }
        }
        /// <summary>
        /// Gets the hash code
        /// </summary>
        /// <returns>Hash code</returns>
        public override int GetHashCode()
        {
            // credit: http://stackoverflow.com/a/263416/677735
            unchecked // Overflow is fine, just wrap
            {
                int hash = 41;

                // Suitable nullity checks
                hash = hash * 59 + Id.GetHashCode();

                if (LocalArea != null)
                {
                    hash = hash * 59 + LocalArea.GetHashCode();
                }

                if (EquipmentCount != null)
                {
                    hash = hash * 59 + EquipmentCount.GetHashCode();
                }

                if (EquipmentTypeName != null)
                {
                    hash = hash * 59 + EquipmentTypeName.GetHashCode();
                }

                if (ProjectName != null)
                {
                    hash = hash * 59 + ProjectName.GetHashCode();
                }

                if (PrimaryContact != null)
                {
                    hash = hash * 59 + PrimaryContact.GetHashCode();
                }

                if (Status != null)
                {
                    hash = hash * 59 + Status.GetHashCode();
                }

                if (ProjectId != null)
                {
                    hash = hash * 59 + ProjectId.GetHashCode();
                }

                if (ExpectedStartDate != null)
                {
                    hash = hash * 59 + ExpectedStartDate.GetHashCode();
                }

                if (ExpectedEndDate != null)
                {
                    hash = hash * 59 + ExpectedEndDate.GetHashCode();
                }

                return(hash);
            }
        }
Exemplo n.º 8
0
        private void DeleteLocalArea(LocalArea localArea)
        {
            var request = new HttpRequestMessage(HttpMethod.Post, "/api/localareas/" + localArea.Id + "/delete");

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

            responseTask.Wait();

            HttpResponseMessage response = responseTask.Result;

            response.EnsureSuccessStatusCode();
        }
Exemplo n.º 9
0
        public static List <LocalArea> GetLocalAreaByStateId(int stateId)
        {
            try
            {
                var connection = ConfigurationManager.ConnectionStrings["DataKioskEntities"].ConnectionString;
                if (string.IsNullOrEmpty(connection))
                {
                    return(new List <LocalArea>());
                }

                //var localAreas = GetLocalAreas();
                //if (!localAreas.Any())
                //{
                //    return new List<LocalArea>();
                //}

                //var items = localAreas.FindAll(x => x.StateId == stateId);
                //if (!items.Any())
                //{
                //    return new List<LocalArea>();
                //}

                //return items;
                using (var sqlConnection = new SqlConnection(connection))
                {
                    sqlConnection.Open();
                    var sqlBuilder = new StringBuilder();
                    sqlBuilder.AppendFormat("SELECT * " +
                                            " FROM \"EnrollKiosk\".\"LocalArea\" " +
                                            " WHERE \"StateId\" = {0}", stateId);
                    string sql     = sqlBuilder.ToString();
                    var    command = new SqlCommand(sql, sqlConnection);
                    var    dr      = command.ExecuteReader();
                    var    items   = new List <LocalArea>();
                    while (dr.Read())
                    {
                        var item = new LocalArea();
                        {
                            item.LocalAreaId = dr.GetInt64(dr.GetOrdinal("LocalAreaId"));
                            item.Name        = dr.GetString(dr.GetOrdinal("Name"));
                        };
                        items.Add(item);
                    }
                    sqlConnection.Close();
                    return(items);
                }
            }
            catch (Exception ex)
            {
                BugManager.LogApplicationBug(ex.StackTrace, ex.Source, ex.Message);
                return(new List <LocalArea>());
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="RentalRequestSearchResultViewModel" /> class.
 /// </summary>
 /// <param name="Id">Id (required).</param>
 /// <param name="LocalArea">LocalArea.</param>
 /// <param name="EquipmentCount">EquipmentCount.</param>
 /// <param name="EquipmentTypeName">EquipmentTypeName.</param>
 /// <param name="ProjectName">ProjectName.</param>
 /// <param name="PrimaryContact">PrimaryContact.</param>
 /// <param name="Status">Project status.</param>
 /// <param name="ProjectId">ProjectId.</param>
 /// <param name="ExpectedStartDate">ExpectedStartDate.</param>
 /// <param name="ExpectedEndDate">ExpectedEndDate.</param>
 public RentalRequestSearchResultViewModel(int Id, LocalArea LocalArea = null, int?EquipmentCount = null, string EquipmentTypeName = null, string ProjectName = null, Contact PrimaryContact = null, string Status = null, int?ProjectId = null, DateTime?ExpectedStartDate = null, DateTime?ExpectedEndDate = null)
 {
     this.Id                = Id;
     this.LocalArea         = LocalArea;
     this.EquipmentCount    = EquipmentCount;
     this.EquipmentTypeName = EquipmentTypeName;
     this.ProjectName       = ProjectName;
     this.PrimaryContact    = PrimaryContact;
     this.Status            = Status;
     this.ProjectId         = ProjectId;
     this.ExpectedStartDate = ExpectedStartDate;
     this.ExpectedEndDate   = ExpectedEndDate;
 }
Exemplo n.º 11
0
        /// <summary>
        /// Map data
        /// </summary>
        /// <param name="dbContext"></param>
        /// <param name="oldObject"></param>
        /// <param name="localArea"></param>
        /// <param name="systemId"></param>
        private static void CopyToInstance(DbAppContext dbContext, ImportModels.Area oldObject, ref LocalArea localArea, string systemId)
        {
            bool isNew = false;

            if (oldObject.Area_Id <= 0)
            {
                return;
            }

            if (localArea == null)
            {
                isNew     = true;
                localArea = new LocalArea {
                    Id = oldObject.Area_Id
                };
            }

            try
            {
                localArea.Name = oldObject.Area_Desc.Trim();
            }
            catch
            {
                // do nothing
            }

            try
            {
                ServiceArea serviceArea = dbContext.ServiceAreas.FirstOrDefault(x => x.MinistryServiceAreaID == oldObject.Service_Area_Id);
                localArea.ServiceArea = serviceArea;
            }
            catch
            {
                // do nothing
            }

            if (isNew)
            {
                localArea.CreateUserid    = systemId;
                localArea.CreateTimestamp = DateTime.UtcNow;
                dbContext.LocalAreas.Add(localArea);
            }
            else
            {
                localArea.LastUpdateUserid    = systemId;
                localArea.LastUpdateTimestamp = DateTime.UtcNow;
                dbContext.LocalAreas.Update(localArea);
            }
        }
Exemplo n.º 12
0
        public void Map_GivenSource_LocalAreaDataMustBeMapped()
        {
            var localArea = new LocalArea()
            {
                Name = "PName",
                CompetentAuthorityId = Guid.NewGuid(),
                Id = Guid.NewGuid()
            };

            var result = mapper.Map(localArea);

            result.Name.Should().Be(localArea.Name);
            result.Id.Should().Be(localArea.Id);
            result.CompetentAuthorityId.Should().Be(localArea.CompetentAuthorityId);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="RentalRequestSearchResultViewModel" /> class.
 /// </summary>
 /// <param name="id">Id (required).</param>
 /// <param name="localArea">LocalArea.</param>
 /// <param name="equipmentCount">EquipmentCount.</param>
 /// <param name="equipmentTypeName">EquipmentTypeName.</param>
 /// <param name="projectName">ProjectName.</param>
 /// <param name="primaryContact">PrimaryContact.</param>
 /// <param name="status">Project status.</param>
 /// <param name="projectId">ProjectId.</param>
 /// <param name="expectedStartDate">ExpectedStartDate.</param>
 /// <param name="expectedEndDate">ExpectedEndDate.</param>
 public RentalRequestSearchResultViewModel(int id, LocalArea localArea = null, int?equipmentCount = null,
                                           string equipmentTypeName    = null, string projectName = null, Contact primaryContact   = null, string status = null,
                                           int?projectId = null, DateTime?expectedStartDate       = null, DateTime?expectedEndDate = null)
 {
     Id                = id;
     LocalArea         = localArea;
     EquipmentCount    = equipmentCount;
     EquipmentTypeName = equipmentTypeName;
     ProjectName       = projectName;
     PrimaryContact    = primaryContact;
     Status            = status;
     ProjectId         = projectId;
     ExpectedStartDate = expectedStartDate;
     ExpectedEndDate   = expectedEndDate;
 }
Exemplo n.º 14
0
        /// <summary>
        /// Get local area by id
        /// </summary>
        /// <param name="id">id of LocalArea to fetch</param>
        /// <response code="200">OK</response>
        /// <response code="404">LocalArea not found</response>
        public virtual IActionResult LocalAreasIdGetAsync(int id)
        {
            bool exists = _context.LocalAreas.Any(a => a.Id == id);

            if (exists)
            {
                LocalArea result = _context.LocalAreas
                                   .Include(x => x.ServiceArea.District.Region)
                                   .First(a => a.Id == id);

                return(new ObjectResult(new HetsResponse(result)));
            }

            // record not found
            return(new ObjectResult(new HetsResponse("HETS-01", ErrorViewModel.GetDescription("HETS-01", _configuration))));
        }
        public async Task SharedUserNotificationAccess()
        {
            // Setup.
            var notification = NotificationApplicationFactory.Create(Guid.NewGuid(), NotificationType.Recovery,
                                                                     UKCompetentAuthority.England, 20181);
            var aspnetInternalUser = UserFactory.Create(Guid.NewGuid(), "Internal", "Internal Last", "12345",
                                                        "*****@*****.**");
            var aspnetSharedUser = UserFactory.Create(Guid.NewGuid(), "External", "Shared", "12345",
                                                      "*****@*****.**");
            var localArea = new LocalArea(Guid.NewGuid(), "Test Area", (int)UKCompetentAuthority.England);

            context.NotificationApplications.Add(notification);
            context.Users.Add(aspnetInternalUser);
            context.Users.Add(aspnetSharedUser);
            context.LocalAreas.Add(localArea);
            await context.SaveChangesAsync();

            var internalUser = new InternalUser(aspnetInternalUser.Id, "test", UKCompetentAuthority.England,
                                                localArea.Id);
            var sharedUser = new SharedUser(notification.Id, aspnetSharedUser.Id, DateTimeOffset.Now);

            context.InternalUsers.Add(internalUser);
            context.SharedUser.Add(sharedUser);
            await context.SaveChangesAsync();

            // Set the shared user to be the user context.
            A.CallTo(() => userContext.UserId).Returns(Guid.Parse(sharedUser.UserId));

            var authorization = new NotificationApplicationAuthorization(context, userContext);

            // Assert.
            // There's no assertion for 'does not throw exception' so just executing it as normal.
            await authorization.EnsureAccessAsync(notification.Id);

            // Clear data.
            context.DeleteOnCommit(internalUser);
            context.DeleteOnCommit(sharedUser);
            await context.SaveChangesAsync();

            context.Entry(aspnetInternalUser).State = EntityState.Deleted;
            context.Entry(aspnetSharedUser).State   = EntityState.Deleted;
            context.Entry(localArea).State          = EntityState.Deleted;
            await context.SaveChangesAsync();

            context.DeleteOnCommit(notification);
            await context.SaveChangesAsync();
        }
Exemplo n.º 16
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="dbContext"></param>
        /// <param name="oldObject"></param>
        /// <param name="localArea"></param>
        static private void CopyToInstance(PerformContext performContext, DbAppContext dbContext, HETSAPI.Import.Area oldObject, ref LocalArea localArea, string systemId)
        {
            bool isNew = false;

            if (oldObject.Area_Id <= 0)
            {
                return;
            }
            if (localArea == null)
            {
                isNew        = true;
                localArea    = new LocalArea();
                localArea.Id = oldObject.Area_Id;
            }
            try
            {
                localArea.Name = oldObject.Area_Desc.Trim();
            }
            catch (Exception e)
            {
                string istr = e.ToString();
            }

            try
            {
                ServiceArea serviceArea = dbContext.ServiceAreas.FirstOrDefault(x => x.MinistryServiceAreaID == oldObject.Service_Area_Id);
                localArea.ServiceArea = serviceArea;
            }
            catch (Exception e)
            {
                string iStr = e.ToString();
            }


            if (isNew)
            {
                localArea.CreateUserid    = systemId;
                localArea.CreateTimestamp = DateTime.UtcNow;
                dbContext.LocalAreas.Add(localArea);
            }
            else
            {
                localArea.LastUpdateUserid    = systemId;
                localArea.LastUpdateTimestamp = DateTime.UtcNow;
                dbContext.LocalAreas.Update(localArea);
            }
        }
        public async Task RandomExternalUserAccessThrowsException()
        {
            // Setup.
            var notification = NotificationApplicationFactory.Create(Guid.NewGuid(), NotificationType.Recovery,
                                                                     UKCompetentAuthority.England, 20181);
            var aspnetInternalUser = UserFactory.Create(Guid.NewGuid(), "Internal", "Internal Last", "12345",
                                                        "*****@*****.**");
            var aspnetSharedUser = UserFactory.Create(Guid.NewGuid(), "External", "Shared", "12345",
                                                      "*****@*****.**");
            var localArea = new LocalArea(Guid.NewGuid(), "Test Area", (int)UKCompetentAuthority.England);

            context.NotificationApplications.Add(notification);
            context.Users.Add(aspnetInternalUser);
            context.Users.Add(aspnetSharedUser);
            context.LocalAreas.Add(localArea);
            await context.SaveChangesAsync();

            var internalUser = new InternalUser(aspnetInternalUser.Id, "test", UKCompetentAuthority.England,
                                                localArea.Id);
            //Shared user is different to the user context.
            var sharedUser = new SharedUser(notification.Id, aspnetSharedUser.Id, DateTimeOffset.Now);

            context.SharedUser.Add(sharedUser);
            await context.SaveChangesAsync();

            context.InternalUsers.Add(internalUser);
            await context.SaveChangesAsync();

            var authorization = new NotificationApplicationAuthorization(context, userContext);

            // Assert.
            await Assert.ThrowsAsync <SecurityException>(() => authorization.EnsureAccessAsync(notification.Id));

            // Clear data.
            context.DeleteOnCommit(internalUser);
            context.DeleteOnCommit(sharedUser);
            await context.SaveChangesAsync();

            context.Entry(aspnetInternalUser).State = EntityState.Deleted;
            context.Entry(aspnetSharedUser).State   = EntityState.Deleted;
            context.Entry(localArea).State          = EntityState.Deleted;
            await context.SaveChangesAsync();

            context.DeleteOnCommit(notification);
            await context.SaveChangesAsync();
        }
Exemplo n.º 18
0
        public async Task <bool> HandleAsync(AddAatf message)
        {
            authorization.EnsureCanAccessInternalArea();
            authorization.EnsureUserInRole(Roles.InternalAdmin);

            var siteAddress = addressMapper.Map(message.Aatf.SiteAddress);

            var organisation = await dataAccess.GetById <Organisation>(message.OrganisationId);

            var competentAuthority = await commonDataAccess.FetchCompetentAuthority(message.Aatf.CompetentAuthority.Abbreviation);

            var contact = contactMapper.Map(message.AatfContact);

            LocalArea localArea = null;

            PanArea panArea = null;

            if (message.Aatf.LocalAreaData != null)
            {
                localArea = await commonDataAccess.FetchLookup <LocalArea>(message.Aatf.LocalAreaData.Id);
            }

            if (message.Aatf.PanAreaData != null)
            {
                panArea = await commonDataAccess.FetchLookup <PanArea>(message.Aatf.PanAreaData.Id);
            }

            var aatf = new Domain.AatfReturn.Aatf(
                message.Aatf.Name,
                competentAuthority,
                message.Aatf.ApprovalNumber,
                Enumeration.FromValue <Domain.AatfReturn.AatfStatus>(message.Aatf.AatfStatus.Value),
                organisation,
                siteAddress,
                Enumeration.FromValue <Domain.AatfReturn.AatfSize>(message.Aatf.Size.Value),
                message.Aatf.ApprovalDate.GetValueOrDefault(),
                contact,
                message.Aatf.FacilityType.ToDomainEnumeration <Domain.AatfReturn.FacilityType>(),
                message.Aatf.ComplianceYear,
                localArea,
                panArea, message.AatfId);

            await dataAccess.Add <Domain.AatfReturn.Aatf>(aatf);

            return(true);
        }
Exemplo n.º 19
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="item"></param>
        /// <response code="201">LocalArea created</response>
        public virtual IActionResult LocalAreasPostAsync(LocalArea item)
        {
            AdjustRecord(item);
            var exists = _context.LocalAreas.Any(a => a.Id == item.Id);

            if (exists)
            {
                _context.LocalAreas.Update(item);
            }
            else
            {
                // record not found
                _context.LocalAreas.Add(item);
            }
            // Save the changes
            _context.SaveChanges();
            return(new ObjectResult(item));
        }
Exemplo n.º 20
0
        public async Task HandleAsync_GivenMandatoryParametersAndLocalArea_FileNameShouldNotContainLocalArea()
        {
            GetAatfAeDetailsCsv request = new GetAatfAeDetailsCsv(fixture.Create <int>(), fixture.Create <ReportFacilityType>(), null, null, fixture.Create <Guid>(), false);

            LocalArea localArea = fixture.Create <LocalArea>();

            A.CallTo(() => commonDataAccess.FetchLookup <LocalArea>(request.LocalArea.Value)).Returns(localArea);

            DateTime date = new DateTime(2019, 05, 18, 11, 12, 0);

            SystemTime.Freeze(date);

            CSVFileData data = await handler.HandleAsync(request);

            data.FileName.Should().Be($"{request.ComplianceYear}_{request.FacilityType.ToString().ToUpper()}_AATF-AE-PCS-organisation details_{date:ddMMyyyy_HHmm}.csv");

            SystemTime.Unfreeze();
        }
Exemplo n.º 21
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="id">id of LocalArea to fetch</param>
        /// <param name="item"></param>
        /// <response code="200">OK</response>
        /// <response code="404">LocalArea not found</response>
        public virtual IActionResult LocalAreasIdPutAsync(int id, LocalArea item)
        {
            AdjustRecord(item);
            var exists = _context.LocalAreas.Any(a => a.Id == id);

            if (exists && id == item.Id)
            {
                _context.LocalAreas.Update(item);
                // Save the changes
                _context.SaveChanges();
                return(new ObjectResult(item));
            }
            else
            {
                // record not found
                return(new StatusCodeResult(404));
            }
        }
Exemplo n.º 22
0
        /// <summary>
        /// Update local area
        /// </summary>
        /// <param name="id">id of LocalArea to update</param>
        /// <param name="item"></param>
        /// <response code="200">OK</response>
        /// <response code="404">LocalArea not found</response>
        public virtual IActionResult LocalAreasIdPutAsync(int id, LocalArea item)
        {
            AdjustRecord(item);

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

            if (exists && id == item.Id)
            {
                _context.LocalAreas.Update(item);

                // Save the changes
                _context.SaveChanges();

                return(new ObjectResult(new HetsResponse(item)));
            }

            // record not found
            return(new ObjectResult(new HetsResponse("HETS-01", ErrorViewModel.GetDescription("HETS-01", _configuration))));
        }
Exemplo n.º 23
0
 public virtual void UpdateDetails(string name, UKCompetentAuthority competentAuthority, string approvalNumber, AatfStatus aatfStatus, Organisation organisation, AatfSize aatfSize, DateTime?approvalDate, LocalArea localArea, PanArea panArea)
 {
     Name = name;
     CompetentAuthority = competentAuthority;
     ApprovalNumber     = approvalNumber;
     AatfStatus         = aatfStatus;
     Organisation       = organisation;
     Size         = aatfSize;
     ApprovalDate = approvalDate;
     LocalArea    = localArea;
     if (localArea == null)
     {
         LocalAreaId = null;
     }
     PanArea = panArea;
     if (panArea == null)
     {
         PanAreaId = null;
     }
 }
Exemplo n.º 24
0
        public void Aatf_GivenNullLocalArea_LocalAreaIsNull()
        {
            var          competentAuthority = A.Fake <UKCompetentAuthority>();
            var          organisation       = A.Fake <Organisation>();
            const string name           = "name";
            const string approvalNumber = "approvalNumber";
            var          aatfStatus     = AatfStatus.Approved;
            var          contact        = A.Fake <AatfContact>();
            var          complianceYear = (Int16)2019;
            LocalArea    localArea      = null;
            var          panArea        = A.Fake <PanArea>();
            var          facilityType   = FacilityType.Aatf;
            var          date           = DateTime.Now;
            var          address        = A.Fake <AatfAddress>();
            var          size           = AatfSize.Large;

            var aatf = new Aatf(name, competentAuthority, approvalNumber, aatfStatus, organisation, address, size, date, contact, facilityType, complianceYear, localArea, panArea);

            aatf.LocalArea.Should().Be(localArea);
        }
Exemplo n.º 25
0
        /// <summary>
        /// Map data
        /// </summary>
        /// <param name="dbContext"></param>
        /// <param name="oldObject"></param>
        /// <param name="localArea"></param>
        /// <param name="systemId"></param>
        private static void CopyToInstance(DbAppContext dbContext, Area oldObject, ref LocalArea localArea, string systemId)
        {
            try
            {
                if (oldObject.Area_Id <= 0)
                {
                    return;
                }

                localArea = new LocalArea
                {
                    Id = oldObject.Area_Id,
                    LocalAreaNumber = oldObject.Area_Id,
                    Name            = ImportUtility.GetCapitalCase(oldObject.Area_Desc.Trim())
                };

                // map to the correct service area
                ServiceArea serviceArea = dbContext.ServiceAreas.AsNoTracking()
                                          .FirstOrDefault(x => x.MinistryServiceAreaID == oldObject.Service_Area_Id);

                if (serviceArea == null)
                {
                    // not mapped correctly
                    return;
                }

                localArea.ServiceAreaId = serviceArea.Id;

                localArea.AppCreateUserid        = systemId;
                localArea.AppCreateTimestamp     = DateTime.UtcNow;
                localArea.AppLastUpdateUserid    = systemId;
                localArea.AppLastUpdateTimestamp = DateTime.UtcNow;

                dbContext.LocalAreas.Add(localArea);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
Exemplo n.º 26
0
        public Aatf(string name,
                    UKCompetentAuthority competentAuthority,
                    string approvalNumber,
                    AatfStatus aatfStatus,
                    Organisation organisation,
                    AatfAddress aatfSiteAddress,
                    AatfSize aatfSize,
                    DateTime approvalDate,
                    AatfContact contact,
                    FacilityType facilityType,
                    Int16 complianceYear,
                    LocalArea localArea,
                    PanArea panArea,
                    Guid?aatfId = null)
        {
            Guard.ArgumentNotNullOrEmpty(() => name, name);
            Guard.ArgumentNotNullOrEmpty(() => approvalNumber, approvalNumber);
            Guard.ArgumentNotNull(() => competentAuthority, competentAuthority);
            Guard.ArgumentNotNull(() => aatfStatus, aatfStatus);
            Guard.ArgumentNotNull(() => organisation, organisation);
            Guard.ArgumentNotNull(() => contact, contact);
            Guard.ArgumentNotNull(() => aatfSize, aatfSize);
            Guard.ArgumentNotNull(() => aatfSiteAddress, aatfSiteAddress);
            Guard.ArgumentNotNull(() => facilityType, facilityType);

            Name = name;
            CompetentAuthority = competentAuthority;
            ApprovalNumber     = approvalNumber;
            AatfStatus         = aatfStatus;
            Organisation       = organisation;
            Size           = aatfSize;
            SiteAddress    = aatfSiteAddress;
            ApprovalDate   = approvalDate;
            Contact        = contact;
            FacilityType   = facilityType;
            ComplianceYear = complianceYear;
            LocalArea      = localArea;
            PanArea        = panArea;
            AatfId         = aatfId == null?Guid.NewGuid() : aatfId.Value;
        }
        public async Task InternalUserDifferentCompetentAuthorityAccessThrowsException()
        {
            // Setup.
            var notification = NotificationApplicationFactory.Create(Guid.NewGuid(), NotificationType.Recovery,
                                                                     UKCompetentAuthority.England, 20181);
            var aspnetInternalUser = UserFactory.Create(Guid.NewGuid(), "Internal", "Internal Last", "12345",
                                                        "*****@*****.**");
            var localArea = new LocalArea(Guid.NewGuid(), "Test Area", (int)UKCompetentAuthority.England);

            context.NotificationApplications.Add(notification);
            context.Users.Add(aspnetInternalUser);
            context.LocalAreas.Add(localArea);
            await context.SaveChangesAsync();

            // Internal user is different UKCA from the notification - should cause the exception.
            var internalUser = new InternalUser(aspnetInternalUser.Id, "test", UKCompetentAuthority.Wales,
                                                localArea.Id);

            context.InternalUsers.Add(internalUser);
            await context.SaveChangesAsync();

            A.CallTo(() => userContext.UserId).Returns(Guid.Parse(internalUser.UserId));

            var authorization = new NotificationApplicationAuthorization(context, userContext);

            // Assert.
            await Assert.ThrowsAsync <SecurityException>(() => authorization.EnsureAccessAsync(notification.Id));

            // Clear data.
            context.DeleteOnCommit(internalUser);
            await context.SaveChangesAsync();

            context.Entry(aspnetInternalUser).State = EntityState.Deleted;
            context.Entry(localArea).State          = EntityState.Deleted;
            await context.SaveChangesAsync();

            context.DeleteOnCommit(notification);
            await context.SaveChangesAsync();
        }
Exemplo n.º 28
0
        /// <summary>
        /// Delete local area
        /// </summary>
        /// <param name="id">id of LocalArea to delete</param>
        /// <response code="200">OK</response>
        /// <response code="404">LocalArea not found</response>
        public virtual IActionResult LocalAreasIdDeletePostAsync(int id)
        {
            bool exists = _context.LocalAreas.Any(a => a.Id == id);

            if (exists)
            {
                LocalArea item = _context.LocalAreas.First(a => a.Id == id);

                if (item != null)
                {
                    _context.LocalAreas.Remove(item);

                    // Save the changes
                    _context.SaveChanges();
                }

                return(new ObjectResult(new HetsResponse(item)));
            }

            // record not found
            return(new ObjectResult(new HetsResponse("HETS-01", ErrorViewModel.GetDescription("HETS-01", _configuration))));
        }
Exemplo n.º 29
0
        public async Task HandleAsync_GivenMandatoryParametersAndAllOptionalParameters_FileNameShouldBeCorrect()
        {
            UKCompetentAuthority ca        = fixture.Create <UKCompetentAuthority>();
            LocalArea            localArea = fixture.Create <LocalArea>();
            PanArea panArea = fixture.Create <PanArea>();

            GetAatfAeDetailsCsv request = new GetAatfAeDetailsCsv(fixture.Create <int>(), fixture.Create <ReportFacilityType>(), ca.Id, panArea.Id, localArea.Id, false);

            A.CallTo(() => commonDataAccess.FetchCompetentAuthorityById(request.AuthorityId.Value)).Returns(ca);

            A.CallTo(() => commonDataAccess.FetchLookup <LocalArea>(request.LocalArea.Value)).Returns(localArea);

            A.CallTo(() => commonDataAccess.FetchLookup <PanArea>(request.PanArea.Value)).Returns(panArea);

            DateTime date = new DateTime(2019, 05, 18, 11, 12, 0);

            SystemTime.Freeze(date);

            CSVFileData data = await handler.HandleAsync(request);

            data.FileName.Should().Be($"{request.ComplianceYear}_{ca.Abbreviation}_{panArea.Name}_{request.FacilityType.ToString().ToUpper()}_AATF-AE-PCS-organisation details_{date:ddMMyyyy_HHmm}.csv");

            SystemTime.Unfreeze();
        }
        public async Task CheckExternalUserNotOwnerAccessThrowsException()
        {
            // Setup.
            var notification = NotificationApplicationFactory.Create(Guid.NewGuid(), NotificationType.Recovery,
                                                                     UKCompetentAuthority.England, 20181);
            var aspnetInternalUser = UserFactory.Create(Guid.NewGuid(), "Internal", "Internal Last", "12345",
                                                        "*****@*****.**");
            var localArea = new LocalArea(Guid.NewGuid(), "Test Area", (int)UKCompetentAuthority.England);

            context.NotificationApplications.Add(notification);
            context.Users.Add(aspnetInternalUser);
            context.LocalAreas.Add(localArea);
            await context.SaveChangesAsync();

            var internalUser = new InternalUser(aspnetInternalUser.Id, "test", UKCompetentAuthority.England,
                                                localArea.Id);

            context.InternalUsers.Add(internalUser);
            await context.SaveChangesAsync();

            var authorization = new NotificationApplicationAuthorization(context, userContext);

            // Assert.
            await Assert.ThrowsAsync <SecurityException>(() => authorization.EnsureAccessIsOwnerAsync(notification.Id));

            // Clear data.
            context.DeleteOnCommit(internalUser);
            await context.SaveChangesAsync();

            context.Entry(aspnetInternalUser).State = EntityState.Deleted;
            context.Entry(localArea).State          = EntityState.Deleted;
            await context.SaveChangesAsync();

            context.DeleteOnCommit(notification);
            await context.SaveChangesAsync();
        }