Exemple #1
0
            public void MergePersonRegistration_ExistsWithSource_NewWithouSource_NoUpdate(
                [Range(1, 10)] int dummy)
            {
                using (var dataContext = new PartDataContext())
                {
                    // Insert old record
                    var oio = Utilities.CreateFakePerson(true);
                    var pId = new PersonIdentifier()
                    {
                        UUID = Guid.NewGuid(), CprNumber = Utilities.RandomCprNumber()
                    };
                    CprBroker.Engine.Local.UpdateDatabase.MergePersonRegistration(pId, oio, out personRegistrationId);

                    var xml = oio.SourceObjectsXml;
                    oio.SourceObjectsXml = null;
                    var newRet = CprBroker.Engine.Local.UpdateDatabase.MergePersonRegistration(pId, oio, out personRegistrationId);
                    Assert.False(newRet);

                    var dbPersons = dataContext.PersonRegistrations.Where(pr => pr.UUID == pId.UUID).OrderBy(p => p.BrokerUpdateDate).ToArray();
                    Assert.AreEqual(1, dbPersons.Length);

                    var tmpElement = System.Xml.Linq.XElement.Parse(xml);
                    Assert.AreEqual(tmpElement.ToString(), dbPersons[0].SourceObjects.ToString());
                }
            }
        public async Task Handle(GiveTriggerCommand command)
        {
            var giverId       = new PersonIdentifier(command.GiverId);
            var receiverId    = new PersonIdentifier(command.ReceiverId);
            var giverTreasury = await _treasuryRepository.GetByPersonIdentifier(giverId);

            var receiverTreasury = await _treasuryRepository.GetByPersonIdentifier(receiverId);

            var trigger = new Trigger(
                Description: command.Description,
                Money: new Money(command.Amount, (Currency)Enum.Parse(typeof(Currency), command.Currency)),
                Giver: giverId,
                Receiver: receiverId,
                MoneyType: (TreasuryMoneyType)Enum.Parse(typeof(TreasuryMoneyType), command.MoneyType));

            if (!giverTreasury.CanPayTrigger(trigger))
            {
                throw new DomainException($"{giverId.Id} cannot pay trigger");
            }
            giverTreasury.PayTrigger(trigger);
            receiverTreasury.ReceiveTrigger(trigger);

            await _treasuryRepository.Update(giverTreasury);

            await _treasuryRepository.Update(receiverTreasury);

            await _triggerRepository.Save(trigger);
        }
Exemple #3
0
        public async Task <PersonIdentifier> AddPersonIdentifierType(int requestPersonId, int requestIdentifierId, string requestIdentifierValue, int requestUserId)
        {
            try
            {
                PersonIdentifier personIdentifier = new PersonIdentifier()
                {
                    PersonId        = requestPersonId,
                    IdentifierId    = requestIdentifierId,
                    IdentifierValue = requestIdentifierValue,
                    CreatedBy       = requestUserId,
                    CreateDate      = DateTime.Now,
                    DeleteFlag      = false
                };

                await _commonUnitOfWork.Repository <PersonIdentifier>().AddAsync(personIdentifier);

                await _commonUnitOfWork.SaveAsync();

                return(personIdentifier);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
Exemple #4
0
        public static void ImportPersonRegistrationFromXmlFile(string path)
        {
            var xml = System.IO.File.ReadAllText(path);
            var oio = Utilities.Strings.Deserialize <Schemas.Part.RegistreringType1>(xml);

            var uuid = new PersonIdentifier()
            {
                UUID = new Guid(path.Substring(path.LastIndexOf("\\") + 1))
            };

            if (oio.AttributListe.RegisterOplysning[0].Item is CprBroker.Schemas.Part.CprBorgerType)
            {
                uuid.CprNumber = (oio.AttributListe.RegisterOplysning[0].Item as Schemas.Part.CprBorgerType).PersonCivilRegistrationIdentifier;
            }
            else if (oio.AttributListe.RegisterOplysning[0].Item is Schemas.Part.UdenlandskBorgerType)
            {
                uuid.CprNumber = (oio.AttributListe.RegisterOplysning[0].Item as Schemas.Part.UdenlandskBorgerType).PersonCivilRegistrationReplacementIdentifier;
            }
            else
            {
                uuid.CprNumber = (oio.AttributListe.RegisterOplysning[0].Item as Schemas.Part.UkendtBorgerType).PersonCivilRegistrationReplacementIdentifier;
            }
            UpdatePersonUuid(uuid.CprNumber, uuid.UUID.Value);
            UpdatePersonRegistration(uuid, oio);
        }
Exemple #5
0
        public CprBroker.Schemas.Part.RegistreringType1 Read(PersonIdentifier uuid, CprBroker.Schemas.Part.LaesInputType input, Func <string, Guid> cpr2uuidFunc, out QualityLevel?ql)
        {
            Schemas.Part.RegistreringType1 ret = null;
            var fromRegistrationDate           = TidspunktType.ToDateTime(input.RegistreringFraFilter);
            var toRegistrationDate             = TidspunktType.ToDateTime(input.RegistreringTilFilter);

            var fromEffectDate = TidspunktType.ToDateTime(input.VirkningFraFilter);
            var ToEffectDate   = TidspunktType.ToDateTime(input.VirkningTilFilter);

            using (var dataContext = new PartDataContext())
            {
                Data.Part.PersonRegistration.SetChildLoadOptions(dataContext);
                ret =
                    (
                        from personReg in dataContext.PersonRegistrations
                        where personReg.UUID == uuid.UUID
                        // Filter by registration date
                        && (!fromRegistrationDate.HasValue || personReg.RegistrationDate >= fromRegistrationDate) &&
                        (!toRegistrationDate.HasValue || personReg.RegistrationDate <= toRegistrationDate)
                        // TODO: Filter by effect date
                        orderby personReg.RegistrationDate descending, personReg.BrokerUpdateDate descending
                        select Data.Part.PersonRegistration.ToXmlType(personReg)
                    ).FirstOrDefault();
            }
            ql = QualityLevel.LocalCache;
            return(ret);
        }
Exemple #6
0
        public async Task <PersonIdentifier> addPersonIdentifiers(int personId, int identifierId, string identifierValue, int userId)
        {
            try
            {
                PersonIdentifier personIdentifier = new PersonIdentifier()
                {
                    PersonId        = personId,
                    IdentifierId    = identifierId,
                    IdentifierValue = identifierValue,
                    DeleteFlag      = false,
                    CreatedBy       = userId,
                    CreateDate      = DateTime.Now
                };

                await _unitOfWork.Repository <PersonIdentifier>().AddAsync(personIdentifier);

                await _unitOfWork.SaveAsync();

                return(personIdentifier);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
        public void CanLoad_4()
        {
            var identity = new PersonIdentifierBuilder().BuildSLLIdentifier();
            var loaded   = PersonIdentifier.Load(SLLIdentifier.Oid, identity.ToString(PersonIdentifierFormatOption.None));

            Assert.IsInstanceOfType(loaded, typeof(SLLIdentifier));

            Print(identity);
        }
        public void CanLoad_3()
        {
            var identity = PersonIdentifier.Load(SLLIdentifier.Oid, "991993000033");

            Assert.IsInstanceOfType(identity, typeof(SLLIdentifier));
            Assert.IsFalse(identity.CanCalculateBirthDate);
            Assert.IsFalse(identity.CanCalculateGender);

            Print(identity);
        }
 public int AddPersonIdentifier(PersonIdentifier personIdentifier)
 {
     using (UnitOfWork unitOfWork = new UnitOfWork(new GreencardContext()))
     {
         unitOfWork.PersonIdentifierRepository.Add(personIdentifier);
         unitOfWork.Complete();
         unitOfWork.Dispose();
         return(personIdentifier.Id);
     }
 }
Exemple #10
0
 public int UpdatePersondentifier(PersonIdentifier personIdentifier)
 {
     using (UnitOfWork _unitOfWork = new UnitOfWork(new RecordContext()))
     {
         _unitOfWork.PersonIdentifierRepository.Update(personIdentifier);
         Result = _unitOfWork.Complete();
         _unitOfWork.Dispose();
         return(Result);
     }
 }
        public async Task <Result <AddPersonIdentifierResponse> > Handle(PersonIdentifierCommand request, CancellationToken cancellationToken)
        {
            try

            {
                RegisterPersonService rs = new RegisterPersonService(_unitOfWork);
                if (request.PersonId > 0)
                {
                    PersonIdentifier pidm = new PersonIdentifier();
                    pidm = await rs.GetCurrentPersonIdentifier(request.IdentifierId, request.PersonId);

                    if (pidm != null)
                    {
                        //pidm.DeleteFlag = true;
                        //var pdm = await Task.Run(() => rs.UpdatePersonIdentifier(pidm));
                        pidm.IdentifierId    = request.IdentifierId;
                        pidm.IdentifierValue = request.IdentifierValue;
                        var finalupdate = await Task.Run(() => rs.UpdatePersonIdentifier(pidm));

                        //var  finalupdate = await rs.addPersonIdentifiers(request.PersonId, request.IdentifierId, request.IdentifierValue, request.UserId);
                        if (finalupdate != null)
                        {
                            if (finalupdate.Id > 0)
                            {
                                msg += "PersonIdentifier updated successfully";
                            }
                        }
                    }

                    else
                    {
                        var finalIdent = await rs.addPersonIdentifiers(request.PersonId, request.IdentifierId, request.IdentifierValue, request.UserId);

                        if (finalIdent != null)
                        {
                            if (finalIdent.Id > 0)
                            {
                                msg += "PersonIdentifierType added successfully";
                            }
                        }
                    }
                }


                return(Result <AddPersonIdentifierResponse> .Valid(new AddPersonIdentifierResponse()
                {
                    Message = msg
                }));
            }
            catch (Exception e)
            {
                return(Result <AddPersonIdentifierResponse> .Invalid(e.Message));
            }
        }
Exemple #12
0
        /// <summary>
        /// Updates the system database with person registration objects
        /// </summary>
        /// <param name="personIdentifier"></param>
        /// <param name="personRegistraion"></param>
        public static void UpdatePersonRegistration(PersonIdentifier personIdentifier, Schemas.Part.RegistreringType1 personRegistraion)
        {
            // TODO: differentiate the 'true' returned between cases when new data is inserted or just SourceObjects is updated
            Guid?personRegistrationId = null;

            if (MergePersonRegistration(personIdentifier, personRegistraion, out personRegistrationId))
            {
                // TODO: move this call to a separate phase in request processing
                NotifyPersonRegistrationUpdate(personIdentifier.UUID.Value, personRegistrationId.Value);
            }
        }
Exemple #13
0
        public void CanLoad_2()
        {
            var identity = PersonIdentifier.Load(ROLIdentifier.Oid, "19810829TB1F");

            Assert.IsInstanceOfType(identity, typeof(ROLIdentifier));

            Assert.IsFalse(identity.CanCalculateBirthDate);
            Assert.IsFalse(identity.CanCalculateGender);

            Print(identity);
        }
Exemple #14
0
        public IViewComponentResult Invoke(PersonIdentifier identifier, DefinitionRegistry registry, bool raw)
        {
            if (identifier == null)
            {
                return(Empty());
            }
            var result = View(GetViewName(registry, identifier.Definition), identifier.Value);

            result.ViewData["Raw"] = raw;
            return(result);
        }
 private bool TryCreatePerson()
 {            
     var identifier = new PersonIdentifier(TextBoxIdentifier.Text);
     Person temp;
     if (RepositoryManager.TryGet(identifier, out temp))
     {
         MessageBox.Show(this, "Já existe uma pessoa com esse identificador único.", "Identificador ÚNICO repetido ._.", MessageBoxButtons.OK, MessageBoxIcon.Error);
         return false;
     }
     Person = new Person(new PersonIdentifier(TextBoxIdentifier.Text), TextBoxName.Text);
     return true;
 }
 ContainSingleIdentifierValue(
     this GenericCollectionAssertions <PersonIdentifierEntity> assertions,
     PersonIdentifier identifier,
     bool deleted = false
     )
 {
     return(assertions.ContainSingleMarshalledIdentifierValue(
                identifier.Definition,
                identifier.Definition.CreateXmlMarshaller().MarshallToXml(identifier)
                .ToString(SaveOptions.DisableFormatting),
                deleted));
 }
Exemple #17
0
 public bool PutSubscription(PersonIdentifier personIdentifier)
 {
     if (IPartPerCallDataProviderHelper.CanCallOnline(personIdentifier.CprNumber))
     {
         IndividualRequestType  request  = new IndividualRequestType(true, DataType.NoData, decimal.Parse(personIdentifier.CprNumber));
         IndividualResponseType response = this.GetResponse(request);
         return(true);
     }
     else
     {
         return(false);
     }
 }
Exemple #18
0
 public async Task UpdatePersonIdentifierType(PersonIdentifier personIdentifierType)
 {
     try
     {
         _commonUnitOfWork.Repository <PersonIdentifier>().Update(personIdentifierType);
         await _commonUnitOfWork.SaveAsync();
     }
     catch (Exception e)
     {
         Log.Error(e.Message + " " + e.InnerException);
         throw e;
     }
 }
Exemple #19
0
 public void MergePersonRegistration_New_True(
     [Range(1, 10)] int dummy)
 {
     using (var dataContext = new PartDataContext())
     {
         var oio = Utilities.CreateFakePerson();
         var pId = new PersonIdentifier()
         {
             UUID = Guid.NewGuid(), CprNumber = Utilities.RandomCprNumber()
         };
         var ret = CprBroker.Engine.Local.UpdateDatabase.MergePersonRegistration(pId, oio, out personRegistrationId);
         Assert.True(ret);
     }
 }
        public void CanParse_4()
        {
            var identity = PersonIdentifier.Parse("00749852-BZK0");

            Assert.IsInstanceOfType(identity, typeof(NationalReserveNumberIdentifier));

            Assert.AreEqual("00749852BZK0", identity.Value);
            Assert.AreEqual(NationalReserveNumberIdentifier.Oid, identity.System);

            Assert.IsFalse(identity.CanCalculateBirthDate);
            Assert.IsFalse(identity.CanCalculateGender);

            Print(identity);
        }
Exemple #21
0
        public void CanLoad_2()
        {
            var identity = PersonIdentifier.Load(VGRIdentifier.Oid, "19450829K087");

            Assert.IsInstanceOfType(identity, typeof(VGRIdentifier));

            Assert.IsTrue(identity.CanCalculateBirthDate);
            Assert.AreEqual(74, identity.CalculateAge(new DateTime(2020, 1, 1)));

            Assert.IsTrue(identity.CanCalculateGender);
            Assert.AreEqual(PersonIdentityGender.Female, identity.CalculatedGender);

            Print(identity);
        }
Exemple #22
0
        public void CanLoad_1()
        {
            var identity = PersonIdentifier.Load(LiVIdentifier.Oid, "19810829-SU3A");

            Assert.IsInstanceOfType(identity, typeof(LiVIdentifier));

            Assert.IsTrue(identity.CanCalculateBirthDate);
            Assert.AreEqual(38, identity.CalculateAge(new DateTime(2020, 1, 1)));

            Assert.IsTrue(identity.CanCalculateGender);
            Assert.AreEqual(PersonIdentityGender.Male, identity.CalculatedGender);

            Print(identity);
        }
Exemple #23
0
        public void CanLoad_3()
        {
            var identity = PersonIdentifier.Load(VGRIdentifier.Oid, "19930829X801");

            Assert.IsInstanceOfType(identity, typeof(VGRIdentifier));

            Assert.IsTrue(identity.CanCalculateBirthDate);
            Assert.AreEqual(26, identity.CalculateAge(new DateTime(2020, 1, 1)));

            Assert.IsTrue(identity.CanCalculateGender);
            Assert.AreEqual(PersonIdentityGender.Unknown, identity.CalculatedGender);

            Print(identity);
        }
Exemple #24
0
        private static PersonRegistration[] MatchPersonRegistration(PersonIdentifier personIdentifier, RegistreringType1 oioRegistration, PartDataContext dataContext, out bool dataChanged)
        {
            //TODO: Modify this method to allow searching for registrations that have a fake date of Today, these should be matched by content rather than registration date

            dataChanged = false;
            // Match db registrations by UUID, ActorId and registration date
            var existingInDb = (
                from dbReg in dataContext.PersonRegistrations
                where dbReg.UUID == personIdentifier.UUID &&
                dbReg.RegistrationDate == TidspunktType.ToDateTime(oioRegistration.Tidspunkt)
                &&
                (
                    (
                        oioRegistration.AktoerRef == null &&
                        dbReg.ActorRef == null
                    )
                    ||
                    (
                        oioRegistration.AktoerRef != null &&
                        dbReg.ActorRef != null &&
                        oioRegistration.AktoerRef.Item == dbReg.ActorRef.Value &&
                        (int)oioRegistration.AktoerRef.ItemElementName == dbReg.ActorRef.Type
                    )
                )
                select dbReg
                ).ToArray();

            var ret = new List <PersonRegistration>(existingInDb.Length);

            // Perform a content match if key match is found
            foreach (var dbReg in existingInDb)
            {
                if (dbReg.Equals(oioRegistration))
                {
                    // Exact content match
                    ret.Add(dbReg);
                }
                else
                {
                    // Content match due to bug fix
                    if (UpdateRules.MatchRule.ApplyRules(dbReg, oioRegistration))
                    {
                        dataChanged = true;
                        ret.Add(dbReg);
                    }
                }
            }
            return(ret.ToArray());
        }
Exemple #25
0
        public async Task <Result <GetPersonDetailsResponse> > Handle(GetPersonDetailsCommand request, CancellationToken cancellationToken)
        {
            try
            {
                RegisterPersonService rs = new RegisterPersonService(_unitOfWork);
                int id = request.PersonId;
                if (request.PersonId > 0)
                {
                    persondetail = await rs.GetPerson(id);

                    personEducation = await rs.GetCurrentPersonEducation(id);

                    personocc = await rs.GetCurrentOccupation(id);

                    personmarital = await rs.GetFirstPatientMaritalStatus(id);

                    personlocation = await rs.GetCurrentPersonLocation(id);

                    personcontact = await rs.GetCurrentPersonContact(id);

                    personemerg = await rs.GetCurrentPersonEmergency(id);

                    pid = await rs.GetCurrentPersonIdentifier(id);

                    pt = await rs.GetPatientByPersonId(id);
                }


                _unitOfWork.Dispose();


                return(Result <GetPersonDetailsResponse> .Valid(new GetPersonDetailsResponse()
                {
                    personDetail = persondetail,
                    personEducation = personEducation,
                    personOccupation = personocc,
                    personMaritalStatus = personmarital,
                    personLocation = personlocation,
                    personContact = personcontact,
                    PersonEmergencyView = personemerg,
                    personIdentifier = pid,
                    patient = pt
                }));
            }
            catch (Exception ex)
            {
                return(Result <GetPersonDetailsResponse> .Invalid(ex.Message));
            }
        }
 public override RegistreringType1 RunMainMethod(IPartReadDataProvider prov)
 {
     this.PersonIdentifier = UuidToPersonIdentifier(Input.UUID);
     if (this.PersonIdentifier != null)
     {
         return(prov.Read
                (
                    this.PersonIdentifier,
                    Input,
                    (cprNumber) => CprToUuid(cprNumber),
                    out QualityLevel
                ));
     }
     return(null);
 }
        public void StringMarshaller_CorrectlyMarshalsValue(
            IDefinitionType definitionType, object value, string expectedText)
        {
            var identifier = new PersonIdentifier(
                new SimpleIdentifierValue(value),
                new IdentifierDefinition("Identifier", definitionType));

            var marshaller = CreateMarshallerFor(identifier.Definition);

            var marshalledValue = marshaller.MarshallToXml(identifier);

            Assert.Equal(
                new XElement("identifier", expectedText).ToString(SaveOptions.DisableFormatting),
                marshalledValue.ToString(SaveOptions.DisableFormatting));
        }
Exemple #28
0
 public void MergePersonRegistration_FromExisting_False(
     [Random(0, 99, 10)] int index)
 {
     using (var dataContext = new PartDataContext())
     {
         var dbPerson = dataContext.PersonRegistrations.Where(pr => pr.Person != null).Skip(index).First();
         var oio      = PersonRegistration.ToXmlType(dbPerson);
         var pId      = new PersonIdentifier()
         {
             UUID = dbPerson.UUID, CprNumber = dbPerson.Person.UserInterfaceKeyText
         };
         var ret = CprBroker.Engine.Local.UpdateDatabase.MergePersonRegistration(pId, oio, out personRegistrationId);
         Assert.False(ret);
     }
 }
        public void CanParse_2()
        {
            var identity = PersonIdentifier.Parse("25780404-KHD5");

            Assert.IsInstanceOfType(identity, typeof(NationalReserveNumberIdentifier));

            Assert.AreEqual("25780404KHD5", identity.Value);
            Assert.AreEqual(NationalReserveNumberIdentifier.Oid, identity.System);

            Assert.IsTrue(identity.CanCalculateBirthDate);
            Assert.AreEqual(41, identity.CalculateAge(new DateTime(2020, 1, 1)));

            Assert.IsFalse(identity.CanCalculateGender);

            Print(identity);
        }
        public void CanParse_3()
        {
            var identity = PersonIdentifier.Parse("00342145-BZ31");

            Assert.IsInstanceOfType(identity, typeof(NationalReserveNumberIdentifier));

            Assert.AreEqual("00342145BZ31", identity.Value);
            Assert.AreEqual(NationalReserveNumberIdentifier.Oid, identity.System);

            Assert.IsFalse(identity.CanCalculateBirthDate);

            Assert.IsTrue(identity.CanCalculateGender);
            Assert.AreEqual(PersonIdentityGender.Male, identity.CalculatedGender);

            Print(identity);
        }
Exemple #31
0
        public static Person EnsurePersonExists(PartDataContext dataContext, PersonIdentifier personIdentifier)
        {
            var dbPerson = (from dbPers in dataContext.Persons
                            where dbPers.UUID == personIdentifier.UUID
                            select dbPers).FirstOrDefault();

            if (dbPerson == null)
            {
                dbPerson = new CprBroker.Data.Part.Person()
                {
                    UUID = personIdentifier.UUID.Value,
                    UserInterfaceKeyText = personIdentifier.CprNumber
                };
                dataContext.Persons.InsertOnSubmit(dbPerson);
            }
            return(dbPerson);
        }
        public static void SaveDayOfWeekDismisses(PersonIdentifier id, IEnumerable<DayOfWeekDismiss> dismisses)
        {
            if (id == null)
                throw new ArgumentNullException(nameof(id));
            if (dismisses == null)
                throw new ArgumentNullException(nameof(dismisses));
            if (!GetPersonRepository().Contains(id))
                throw new ArgumentException("Identifier not found in PersonRepository.");

            var repository = GetDayOfWeekDismissRepository();
            var dismissCollection = new DayOfWeekDismissCollection(id, dismisses);
            repository.Save(dismissCollection);
            repository.FlushRepositoryToDisk();
        }
 public static bool TryGet(PersonIdentifier id, out TemporaryDismissCollection entity) => TemporaryDismissRepository.TryGet(id, out entity);
        public static DayOfWeekDismissCollection GetDayOfWeekDismisses(PersonIdentifier id)
        {
            if (id == null)
                throw new ArgumentNullException(nameof(id));
            if (!GetPersonRepository().Contains(id))
                throw new ArgumentException("Identifier not found in PersonRepository.");

            var repository = GetDayOfWeekDismissRepository();
            DayOfWeekDismissCollection dismisses;
            if (repository.TryGet(id, out dismisses))
                return dismisses;
            else
                return new DayOfWeekDismissCollection(id, Array.Empty<DayOfWeekDismiss>());
        }
 public static bool TryGet(PersonIdentifier id, out DayOfWeekDismissCollection entity) => DayOfWeekDismissRepository.TryGet(id, out entity);
        public static bool DeletePerson(PersonIdentifier id)
        {
            var deleted = PersonRepository.Delete(id);
            if (deleted)
            {
                TemporaryDismissRepository.Delete(id);
                DayOfWeekDismissRepository.Delete(id);
            }

            return deleted;
        }
 public static bool DeleteTemporaryDismisses(PersonIdentifier id) => TemporaryDismissRepository.Delete(id);
 public static bool DeleteDayOfWeekDismisses(PersonIdentifier id) => DayOfWeekDismissRepository.Delete(id);
 public static bool TryGet(PersonIdentifier id, out Person entity) => PersonRepository.TryGet(id, out entity);