/// <summary> /// Adds the new home location. /// </summary> /// <param name="ncoaHistory">The NCOA history.</param> /// <param name="locationService">The location service.</param> /// <param name="groupLocationService">The group location service.</param> /// <param name="homeValueId">The home value identifier.</param> /// <param name="changes">The changes.</param> /// <param name="isMailingLocation">Is the location a mailing location.</param> /// <param name="isMappedLocation">Is the location a mapped location.</param> /// <returns></returns> private bool AddNewHomeLocation(NcoaHistory ncoaHistory, LocationService locationService, GroupLocationService groupLocationService, int?homeValueId, History.HistoryChangeList changes, bool isMailingLocation, bool isMappedLocation) { if (homeValueId.HasValue) { var location = locationService.Get( ncoaHistory.UpdatedStreet1, ncoaHistory.UpdatedStreet2, ncoaHistory.UpdatedCity, ncoaHistory.UpdatedState, ncoaHistory.UpdatedPostalCode, ncoaHistory.UpdatedCountry); var groupLocation = new GroupLocation(); groupLocation.Location = location; groupLocation.IsMailingLocation = isMailingLocation; groupLocation.IsMappedLocation = isMappedLocation; groupLocation.GroupId = ncoaHistory.FamilyId; groupLocation.GroupLocationTypeValueId = homeValueId.Value; groupLocation.IsMailingLocation = true; groupLocationService.Add(groupLocation); changes.AddChange(History.HistoryVerb.Add, History.HistoryChangeType.Property, "Location").SetNewValue(groupLocation.Location.ToString()).SourceOfChange = "NCOA Request"; return(true); } return(false); }
/// <summary> /// Marks an address as previous location. /// </summary> /// <param name="ncoaHistory">The NCOA history.</param> /// <param name="groupLocationService">The group location service.</param> /// <param name="previousValueId">The previous value identifier.</param> /// <param name="changes">The changes.</param> /// <returns></returns> public GroupLocation MarkAsPreviousLocation(NcoaHistory ncoaHistory, GroupLocationService groupLocationService, int?previousValueId, History.HistoryChangeList changes) { if (ncoaHistory.LocationId.HasValue && previousValueId.HasValue) { var groupLocation = groupLocationService.Queryable() .Where(gl => gl.GroupId == ncoaHistory.FamilyId && gl.LocationId == ncoaHistory.LocationId && gl.Location.Street1 == ncoaHistory.OriginalStreet1) .FirstOrDefault(); if (groupLocation != null) { if (groupLocation.GroupLocationTypeValueId != previousValueId.Value) { changes.AddChange(History.HistoryVerb.Modify, History.HistoryChangeType.Property, $"Location Type for {groupLocation.Location} ").SetNewValue("Previous").SourceOfChange = "NCOA Request"; groupLocation.GroupLocationTypeValueId = previousValueId.Value; } return(groupLocation); } } return(null); }
/// <summary> /// Convert NCOA return record to NcoaHistory. /// </summary> /// <returns>NcoaHistory</returns> public NcoaHistory ToNcoaHistory() { var ids = InputIndividualId?.Split('_'); var ncoaHistory = new NcoaHistory() { //PersonId = ( ids?[0] ).AsInteger(), PersonAliasId = (ids?[1]).AsInteger(), FamilyId = (ids?[2]).AsInteger(), LocationId = (ids?[3]).AsInteger(), AddressStatus = AddressStatus == "V" ? Model.AddressStatus.Valid : Model.AddressStatus.Invalid, MoveDate = NcoaDateToDateTime(MoveDate), MoveDistance = (decimal?)MoveDistance, NcoaNote = DeliveryPointVerificationNotes, NcoaRunDateTime = NcoaRunDateTime, OriginalCity = InputAddressCity, OriginalPostalCode = InputAddressPostalCode, OriginalState = InputAddressStateCode, OriginalStreet1 = InputAddressLine1, OriginalStreet2 = InputAddressLine2, Processed = Processed.NotProcessed, UpdatedBarcode = Barcode, UpdatedCity = CityName, UpdatedCountry = CountryCode, UpdatedPostalCode = PostalCode, UpdatedState = StateCode, UpdatedStreet1 = AddressLine1, UpdatedStreet2 = AddressLine2 }; switch (ResidentialDeliveryIndicator) { case "Y": ncoaHistory.UpdatedAddressType = UpdatedAddressType.Residential; break; case "N": ncoaHistory.UpdatedAddressType = UpdatedAddressType.Business; break; default: ncoaHistory.UpdatedAddressType = UpdatedAddressType.None; break; } ; if (ANK == "48") { ncoaHistory.NcoaType = NcoaType.Month48Move; } else if (MatchFlag.IsNotNullOrWhiteSpace() && RecordType == "C") { ncoaHistory.NcoaType = NcoaType.Move; } else { ncoaHistory.NcoaType = NcoaType.NoMove; if (AddressStatus == "V") { ncoaHistory.Processed = Processed.Complete; } } if (AddressStatus != "V") { ncoaHistory.AddressInvalidReason = AddressInvalidReason.NotFound; ncoaHistory.AddressStatus = Model.AddressStatus.Invalid; } else if (Vacant == "Y") { ncoaHistory.AddressInvalidReason = AddressInvalidReason.Vacant; } else { ncoaHistory.AddressInvalidReason = AddressInvalidReason.None; } switch (MatchFlag) { case "M": ncoaHistory.MatchFlag = Model.MatchFlag.Moved; break; case "G": ncoaHistory.MatchFlag = Model.MatchFlag.POBoxClosed; break; case "K": ncoaHistory.MatchFlag = Model.MatchFlag.MovedNoForwarding; break; case "F": ncoaHistory.MatchFlag = Model.MatchFlag.MovedToForeignCountry; break; default: ncoaHistory.MatchFlag = Model.MatchFlag.None; break; } switch (MoveType) { case "I": ncoaHistory.MoveType = Model.MoveType.Individual; break; case "F": ncoaHistory.MoveType = Model.MoveType.Family; break; case "B": ncoaHistory.MoveType = Model.MoveType.Business; break; default: ncoaHistory.MoveType = Model.MoveType.None; break; } return(ncoaHistory); }