/// <summary> /// Launches the workflow. /// </summary> /// <param name="fromPersonAliasId">From person alias identifier.</param> /// <param name="fromPhone">From phone.</param> /// <param name="message">The message.</param> /// <param name="toPersonAliasId">To person alias identifier.</param> /// <param name="rockSmsFromPhoneDv">The rock SMS from phone DefinedValue.</param> private void LaunchWorkflow(int?fromPersonAliasId, string fromPhone, string message, int?toPersonAliasId, DefinedValueCache rockSmsFromPhoneDv) { var workflowTypeGuid = rockSmsFromPhoneDv.GetAttributeValue("LaunchWorkflowOnResponseReceived"); var workflowType = WorkflowTypeCache.Get(workflowTypeGuid); if (workflowType == null || (workflowType.IsActive != true)) { return; } var personAliasService = new PersonAliasService(new RockContext()); var workflowAttributeValues = new Dictionary <string, string>(); workflowAttributeValues.Add("FromPhone", fromPhone); workflowAttributeValues.Add("Message", message); workflowAttributeValues.Add("SMSFromDefinedValue", rockSmsFromPhoneDv.Guid.ToString()); if (fromPersonAliasId != null) { workflowAttributeValues.Add("FromPerson", personAliasService.Get(fromPersonAliasId.Value).Guid.ToString() ?? string.Empty); } if (toPersonAliasId != null) { workflowAttributeValues.Add("ToPerson", personAliasService.Get(toPersonAliasId.Value).Guid.ToString() ?? string.Empty); } var launchWorkflowTransaction = new Rock.Transactions.LaunchWorkflowTransaction(workflowType.Id); launchWorkflowTransaction.WorkflowAttributeValues = workflowAttributeValues; launchWorkflowTransaction.Enqueue(); }
/// <summary> /// Ensure that all of the Lava-accessible navigation properties of a Prayer Request object are populated. /// </summary> /// <param name="request"></param> /// <param name="rockContext"></param> private void PrepareObjectForLavaContext(PrayerRequest request, RockContext rockContext) { var personAliasService = new PersonAliasService(rockContext); if (request.RequestedByPersonAliasId != null && request.RequestedByPersonAlias == null) { request.RequestedByPersonAlias = personAliasService.Get(request.RequestedByPersonAliasId.Value); } if (request.ApprovedByPersonAliasId != null && request.ApprovedByPersonAlias == null) { request.ApprovedByPersonAlias = personAliasService.Get(request.ApprovedByPersonAliasId.Value); } if (request.CreatedByPersonAliasId != null && request.CreatedByPersonAlias == null) { request.CreatedByPersonAlias = personAliasService.Get(request.CreatedByPersonAliasId.Value); } if (request.ModifiedByPersonAliasId != null && request.ModifiedByPersonAlias == null) { request.ModifiedByPersonAlias = personAliasService.Get(request.ModifiedByPersonAliasId.Value); } }
public override bool Execute(RockContext rockContext, WorkflowAction action, object entity, out List <string> errorMessages) { errorMessages = new List <string>(); var personAliasGuid = action.GetWorklowAttributeValue(GetActionAttributeValue(action, "Person").AsGuid()).AsGuidOrNull(); if (personAliasGuid.HasValue) { PersonAliasService personAliasService = new PersonAliasService(new RockContext()); PersonAlias personAlias = personAliasService.Get(personAliasGuid.Value); var client = new RestClient(GlobalAttributesCache.Value("MinistrySafeAPIURL")); var request = new RestRequest("/users/{ExternalId}", Method.GET); request.AddHeader("Authorization", "Token token=" + GlobalAttributesCache.Value("MinistrySafeAPIToken")); request.AddUrlSegment("ExternalId", personAlias.Id.ToString()); var tmp = client.Execute <MinistrySafeUser>(request); var user = tmp.Data; SetWorkflowAttributeValue(action, GetActionAttributeValue(action, "Score").AsGuid(), user.score.ToString()); if (user.complete_date != null) { SetWorkflowAttributeValue(action, GetActionAttributeValue(action, "CompletionDate").AsGuid(), user.complete_date.ToString()); } return(true); } return(false); }
/// <summary> /// Executes the specified workflow. /// </summary> /// <param name="rockContext">The rock context.</param> /// <param name="action">The action.</param> /// <param name="entity">The entity.</param> /// <param name="errorMessages">The error messages.</param> /// <returns></returns> public override bool Execute(RockContext rockContext, WorkflowAction action, Object entity, out List <string> errorMessages) { errorMessages = new List <string>(); var personGuid = GetAttributeValue(action, "Person", true).AsGuidOrNull(); if (personGuid == null) { errorMessages.Add("Person Add History requires a valid person"); return(false); } var categoryGuid = GetAttributeValue(action, "Category").AsGuid(); var category = new CategoryService(rockContext).Get(categoryGuid); if (category == null) { errorMessages.Add("Person Add History requires a valid category"); return(false); } PersonAliasService personAliasService = new PersonAliasService(rockContext); var personAlias = personAliasService.Get(personGuid.Value); if (personAlias != null) { var person = personAlias.Person; var entityTypeId = EntityTypeCache.GetId(typeof(Rock.Model.Person)); var workflowEntityTypeId = EntityTypeCache.GetId(typeof(Rock.Model.Workflow)); var mergeFields = GetMergeFields(action); var caption = GetAttributeValue(action, "Caption").ResolveMergeFields(mergeFields); var summary = GetAttributeValue(action, "Summary").ResolveMergeFields(mergeFields); var verb = GetAttributeValue(action, "Verb").ResolveMergeFields(mergeFields); HistoryService historyService = new HistoryService(rockContext); History history = new History { Caption = caption, Summary = summary, Verb = verb, EntityId = person.Id, EntityTypeId = entityTypeId.Value, CategoryId = category.Id }; if (action?.Activity?.Workflow != null && action.Activity.WorkflowId != 0) { history.RelatedEntityTypeId = workflowEntityTypeId; history.RelatedEntityId = action.Activity.WorkflowId; } historyService.Add(history); rockContext.SaveChanges(); return(true); } else { errorMessages.Add("Person Add History requires a valid person"); return(false); } }
/// <summary>Executes the specified context.</summary> /// <param name="context">The context.</param> /// <param name="action">The action.</param> /// <param name="entity">The entity.</param> /// <param name="errorMessages">The error messages.</param> /// <returns></returns> public override bool Execute(RockContext context, WorkflowAction action, object entity, out List <string> errorMessages) { errorMessages = new List <string>(); RockContext rockContext = new RockContext(); PersonAliasService personAliasService = new PersonAliasService(rockContext); GroupService groupService = new GroupService(rockContext); var personAliasGuid = GetAttributeValue(action, "Person", true); var personAlias = personAliasService.Get(personAliasGuid.AsGuid()); if (personAlias == null) { action.AddLogEntry("Person attribute did not contain a person.", true); return(false); } var person = personAlias.Person; person.LoadAttributes(); var personRiseId = person.GetAttributeValue(Constants.PERSON_ATTRIBUTE_KEY_RISEID); if (personRiseId.IsNullOrWhiteSpace()) { action.AddLogEntry("Person is not currently in Rise. Person will by synced automatically when their Rise account is created.", true); return(true); //We didn't fail. } var groupGuid = GetAttributeValue(action, "Group", true); var group = groupService.Get(groupGuid.AsGuid()); if (group == null) { action.AddLogEntry("Group attribute did not contain a group.", true); return(false); } if (group.GroupTypeId != Constants.GetRiseGroupTypeId()) { action.AddLogEntry("Group was not a Rise group type.", true); return(false); } var task = Task.Run(() => //webforms doesn't play nice with async code { RiseClient riseClient = new RiseClient(); var riseGroup = riseClient.GetOrCreateGroup(group); riseGroup.RemoveMember(personRiseId); }); task.Wait(); return(true); }
public override bool Execute(RockContext rockContext, WorkflowAction action, object entity, out List <string> errorMessages) { SignatureDocumentService signatureDocumentService = new SignatureDocumentService(rockContext); BinaryFileService binaryfileService = new BinaryFileService(rockContext); PersonAliasService personAliasService = new PersonAliasService(rockContext); errorMessages = new List <string>(); // Get all the attribute values var mergeFields = GetMergeFields(action); int documentTemplateId = GetAttributeValue(action, "DocumentTemplateId", true).AsInteger(); Guid documentGuid = action.GetWorklowAttributeValue(GetActionAttributeValue(action, "Document").AsGuid()).AsGuid(); BinaryFile binaryFile = binaryfileService.Get(documentGuid); string documentKey = GetAttributeValue(action, "DocumentKey", true).ResolveMergeFields(mergeFields); string documentName = GetAttributeValue(action, "DocumentName", true).ResolveMergeFields(mergeFields); Guid assignedTo = GetAttributeValue(action, "AssignedTo", true).AsGuid(); Guid appliesTo = GetAttributeValue(action, "AppliesTo", true).AsGuid(); Guid signedBy = GetAttributeValue(action, "SignedBy", true).AsGuid(); if (binaryFile != null) { // Create the signature document Rock.Model.SignatureDocument document = new Rock.Model.SignatureDocument(); document.AssignedToPersonAliasId = personAliasService.Get(assignedTo).Id; document.AppliesToPersonAliasId = personAliasService.Get(appliesTo).Id; document.SignedByPersonAliasId = personAliasService.Get(signedBy).Id; document.Name = documentName; document.DocumentKey = documentKey; document.BinaryFileId = binaryFile.Id; document.SignatureDocumentTemplateId = documentTemplateId; document.LastInviteDate = RockDateTime.Now; document.LastStatusDate = RockDateTime.Now; document.Status = SignatureDocumentStatus.Signed; // Add the signature document to the service signatureDocumentService.Add(document); } return(true); }
protected void BindGrid() { RockContext rockContext = new RockContext(); PersonAliasService personAliasService = new PersonAliasService(rockContext); WorkflowService workflowTypeService = new WorkflowService(rockContext); WorkflowService workflowService = new WorkflowService(rockContext); AttributeService attributeService = new AttributeService(rockContext); AttributeValueService attributeValueService = new AttributeValueService(rockContext); RegistrationRegistrantService registrationRegistrantService = new RegistrationRegistrantService(rockContext); List <string> workflowTypes = GetAttributeValues("WorkflowTypes"); List <string> workflowTypeIds = new List <string>(); foreach (string workflowTypeGuid in workflowTypes) { workflowTypeIds.Add(WorkflowTypeCache.Get(workflowTypeGuid.AsGuid()).Id.ToString()); } var attributes = attributeService.Queryable().Where(a => workflowTypeIds.Contains(a.EntityTypeQualifierValue) && a.EntityTypeQualifierColumn == "WorkflowTypeId"); var attributeIds = attributes.Select(a => a.Id); // Get all the family members var familyMembers = personAliasService.Get(PageParameter("PersonAliasId").AsInteger()).Person.GetFamilyMembers(true); var familyAliasIds = familyMembers.SelectMany(fm => fm.Person.Aliases.Select(pa => pa.Id)).ToList(); var discountCodes = registrationRegistrantService.Queryable().Where(rr => rr.PersonAliasId.HasValue && familyAliasIds.Contains(rr.PersonAliasId.Value)) .Where(rr => rr.Registration.DiscountCode != null && rr.Registration.DiscountCode != "") .ToDictionary(x => x.Registration.DiscountCode.ToUpper(), x => x.Registration.DiscountAmount); var qry = workflowService.Queryable().Where(w => workflowTypeIds.Contains(w.WorkflowTypeId.ToString())) .GroupJoin(attributeValueService.Queryable().Where(av => attributeIds.Contains(av.AttributeId)), w => w.Id, av => av.EntityId, (w, av) => new { Workflow = w, AttributeValues = av }) .Where(obj => obj.AttributeValues.Any(av => av.Attribute.Key == "DiscountCode" && discountCodes.Keys.Contains(av.Value))) .ToList() .Select(obj => new { Id = obj.Workflow.Id, FirstName = obj.AttributeValues.Where(av => av.Attribute.Key == "StudentFirstName").Select(av => av.Value).DefaultIfEmpty(obj.AttributeValues.Where(av => av.Attribute.Key == "ParentFirstName").Select(av => av.Value).FirstOrDefault()).FirstOrDefault(), LastName = obj.AttributeValues.Where(av => av.Attribute.Key == "StudentLastName").Select(av => av.Value).DefaultIfEmpty(obj.AttributeValues.Where(av => av.Attribute.Key == "ParentLastName").Select(av => av.Value).FirstOrDefault()).FirstOrDefault(), Campus = obj.AttributeValues.Where(av => av.Attribute.Key == "Campus").Select(av => CampusCache.Get(av.Value.AsGuid())).FirstOrDefault(), ApplicationYear = obj.AttributeValues.Where(av => av.Attribute.Key == "ApplicationYear").Select(av => av.Value).DefaultIfEmpty(attributes.Where(a => a.Key == "ApplicationYear").Select(a => a.DefaultValue).FirstOrDefault()).FirstOrDefault(), DiscountCode = obj.AttributeValues.Where(av => av.Attribute.Key == "DiscountCode").Select(av => av.Value).FirstOrDefault(), DiscountAmount = discountCodes.ContainsKey(obj.AttributeValues.Where(av => av.Attribute.Key == "DiscountCode").Select(av => av.Value.ToUpper()).FirstOrDefault()) ?discountCodes[obj.AttributeValues.Where(av => av.Attribute.Key == "DiscountCode").Select(av => av.Value.ToUpper()).FirstOrDefault()]:0, Event = obj.AttributeValues.Where(av => av.Attribute.Key == "EventStudentisAttending").Select(av => av.Value).DefaultIfEmpty(obj.AttributeValues.Where(av => av.Attribute.Key == "EventLeaderisAttending").Select(av => av.Value).FirstOrDefault()).FirstOrDefault(), Status = obj.Workflow.Status }); gFamilyProfile.DataSource = qry.ToList(); gFamilyProfile.DataBind(); }
private int?AddRegistrantToGroup(RegistrationRegistrant registrant) { if (registrant.PersonAliasId.HasValue && registrant.Registration != null && registrant.Registration.Group != null && registrant.Registration.Group.GroupType != null && _template != null) { var group = registrant.Registration.Group; var groupService = new GroupService(_rockContext); var personAliasService = new PersonAliasService(_rockContext); var groupMemberService = new GroupMemberService(_rockContext); var personAlias = personAliasService.Get(registrant.PersonAliasId.Value); GroupMember groupMember = group.Members.Where(m => m.PersonId == personAlias.PersonId).FirstOrDefault(); if (groupMember == null) { groupMember = new GroupMember(); groupMember.GroupId = group.Id; groupMember.PersonId = personAlias.PersonId; if (_template.GroupTypeId.HasValue && _template.GroupTypeId == group.GroupTypeId && _template.GroupMemberRoleId.HasValue) { groupMember.GroupRoleId = _template.GroupMemberRoleId.Value; groupMember.GroupMemberStatus = _template.GroupMemberStatus; } else { if (group.GroupType.DefaultGroupRoleId.HasValue) { groupMember.GroupRoleId = group.GroupType.DefaultGroupRoleId.Value; } else { groupMember.GroupRoleId = group.GroupType.Roles.Select(r => r.Id).FirstOrDefault(); } } groupMemberService.Add(groupMember); } groupMember.GroupMemberStatus = _template.GroupMemberStatus; _rockContext.SaveChanges(); return(groupMember.Id); } return((int?)null); }
protected void mdEdit_SaveClick(object sender, EventArgs e) { var rockContext = new RockContext(); var personalDeviceService = new PersonalDeviceService(rockContext); var personAliasService = new PersonAliasService(rockContext); var personalDevice = personalDeviceService.Get(hfDeviceId.ValueAsInt()); if (personalDevice == null) { personalDevice = new PersonalDevice { Guid = Guid.NewGuid() }; personalDeviceService.Add(personalDevice); } personalDevice.PersonAliasId = ppPerson.PersonAliasId; personalDevice.NotificationsEnabled = rblnotifications.SelectedValue.AsBoolean(); personalDevice.PersonalDeviceTypeValueId = ddldevicetype.SelectedValueAsInt(); personalDevice.PlatformValueId = ddlplatform.SelectedValueAsInt(); personalDevice.DeviceUniqueIdentifier = tbdeviceuniqueid.Text; personalDevice.DeviceVersion = tbdeviceversion.Text; var previousMACAddress = personalDevice.MACAddress != null?personalDevice.MACAddress.ToLower() : ""; personalDevice.MACAddress = tbmaddress.Text.RemoveAllNonAlphaNumericCharacters().ToLower(); ModifyFrontPorchUser(personAliasService.Get(personalDevice.PersonAliasId ?? ppPerson.PersonAliasId.Value)); AddDeviceToFP(personalDevice.MACAddress); // Archive any mac addresses that match for other devices if (personalDevice.MACAddress != previousMACAddress) { var personalDevices = personalDeviceService .Queryable() .Where(d => d.MACAddress == personalDevice.MACAddress) .ToList(); foreach (var device in personalDevices) { RemoveDeviceMAC(device, rockContext); } RemoveDeviceFromFP(previousMACAddress); //Remove the previous device from FP } rockContext.SaveChanges(); mdEdit.Hide(); BindRepeater(); }
public override bool Execute(RockContext rockContext, WorkflowAction action, object entity, out List <string> errorMessages) { var mergeFields = GetMergeFields(action); errorMessages = new List <string>(); // Get the startdate/enddate DateTime?startDate = GetAttributeValue(action, "StartDate", true).ResolveMergeFields(mergeFields).AsDateTime(); DateTime?endDate = GetAttributeValue(action, "EndDate", true).ResolveMergeFields(mergeFields).AsDateTime(); // Now set the person PersonAliasService personAliasService = new PersonAliasService(rockContext); PersonAlias targetPersonAlias = personAliasService.Get(GetAttributeValue(action, "Person", true).AsGuid()); // get excluded currency types setting List <Guid> excludedCurrencyTypes = new List <Guid>(); if (GetAttributeValue(action, "ExcludedCurrencyTypes").IsNotNullOrWhiteSpace()) { excludedCurrencyTypes = GetAttributeValue(action, "ExcludedCurrencyTypes").Split(',').Select(Guid.Parse).ToList(); } List <Guid> accountGuids = null; if (!string.IsNullOrWhiteSpace(GetAttributeValue(action, "Accounts"))) { accountGuids = GetAttributeValue(action, "Accounts").Split(',').Select(Guid.Parse).ToList(); } // Add all the merge fields from the Statement Utility Statement.AddMergeFields(mergeFields, targetPersonAlias.Person, new DateRange(startDate, endDate), excludedCurrencyTypes, accountGuids); var template = GetAttributeValue(action, "LavaTemplate"); string output = template.ResolveMergeFields(mergeFields); // Now store the target attribute var targetAttribute = AttributeCache.Get(GetActionAttributeValue(action, "StatementHTML").AsGuid(), rockContext); if (targetAttribute.EntityTypeId == new Rock.Model.Workflow().TypeId) { action.Activity.Workflow.SetAttributeValue(targetAttribute.Key, output); } else if (targetAttribute.EntityTypeId == new WorkflowActivity().TypeId) { action.Activity.SetAttributeValue(targetAttribute.Key, output); } return(true); }
public override MobileBlock GetMobile(string parameter) { if (CurrentPerson == null) { return(new MobileBlock() { BlockType = "Avalanche.Blocks.Null", Attributes = CustomAttributes }); } Person person = null; if (parameter == "0") { person = new Person(); } else { RockContext rockContext = new RockContext(); PersonAliasService personAliasService = new PersonAliasService(rockContext); var personAlias = personAliasService.Get(parameter.AsGuid()); if (personAlias == null) { return(new MobileBlock() { BlockType = "Avalanche.Blocks.Null", Attributes = CustomAttributes }); } person = personAlias.Person; } if (person.Id != 0 && !CanEdit(person)) { return(new MobileBlock() { BlockType = "Avalanche.Blocks.Null", Attributes = CustomAttributes }); } var form = GetForm(person, parameter); CustomAttributes.Add("FormElementItems", JsonConvert.SerializeObject(form)); return(new MobileBlock() { BlockType = "Avalanche.Blocks.FormBlock", Attributes = CustomAttributes }); }
private Person GetPerson(PersonAliasService personAliasService, IEnumerable <AttributeValue> AttributeValues) { AttributeValue personAliasAV = AttributeValues.AsQueryable().Where(av => av.AttributeKey == "PersonToVisit" || av.AttributeKey == "HomeboundPerson").FirstOrDefault(); if (personAliasAV != null) { PersonAlias pa = personAliasService.Get(personAliasAV.Value.AsGuid()); if (pa != null) { return(pa.Person); } } return(new Person()); }
protected void SelectButton_Click(object sender, RowEventArgs e) { PersonAliasService personAliasService = new PersonAliasService(new Rock.Data.RockContext()); StaffPerson = personAliasService.Get(e.RowKeyValue.ToString().AsInteger()); lblRequesterName.Text = StaffPerson.Person.FullName; mpStaffSearch.Hide(); btnRemoveRequester.Visible = true; EventHandler handler = this.Select; if (handler != null) { handler(this, e); } }
public override bool Execute(RockContext rockContext, WorkflowAction action, object entity, out List <string> errorMessages) { errorMessages = new List <string>(); var personAliasGuid = action.GetWorklowAttributeValue(GetActionAttributeValue(action, "Person").AsGuid()).AsGuidOrNull(); if (personAliasGuid.HasValue) { PersonAliasService personAliasService = new PersonAliasService(new RockContext()); PersonAlias personAlias = personAliasService.Get(personAliasGuid.Value); var client = new RestClient(GlobalAttributesCache.Value("MinistrySafeAPIURL")); var post = new RestRequest("/users", Method.POST); post.AddHeader("Authorization", "Token token=" + GlobalAttributesCache.Value("MinistrySafeAPIToken")); post.AddJsonBody(new { user = new MinistrySafeUser() { external_id = personAlias.Id.ToString(), first_name = personAlias.Person.NickName, last_name = personAlias.Person.LastName, email = personAlias.Person.Email }, tags = string.Join(",", GetActionAttributeValue(action, "MinistrySafeTags").Trim('|').Split('|')) } ); var execution = client.Execute <bool>(post); if (execution.Data == true) { var request = new RestRequest("/users/{ExternalId}", Method.GET); request.AddHeader("Authorization", "Token token=" + GlobalAttributesCache.Value("MinistrySafeAPIToken")); request.AddUrlSegment("ExternalId", personAlias.Id.ToString()); var tmp = client.Execute <MinistrySafeUser>(request); var user = tmp.Data; if (user.direct_login_url != null) { SetWorkflowAttributeValue(action, GetActionAttributeValue(action, "MinistrySafeURL").AsGuid(), user.direct_login_url); } return(true); } } return(false); }
private void CheckForBlacklist(ChangeRequest changeRequest) { var blackListDV = GetAttributeValue("BlacklistDataView").AsGuidOrNull(); if (blackListDV.HasValue) { RockContext rockContext = new RockContext(); List <int> relatedPersonIds = new List <int>(); if (changeRequest.EntityTypeId == EntityTypeCache.Get(typeof(PersonAlias)).Id) { PersonAliasService personAliasService = new PersonAliasService(rockContext); var personAlias = personAliasService.Get(changeRequest.EntityId); if (personAlias != null) { relatedPersonIds.Add(personAlias.PersonId); } } else if (changeRequest.EntityTypeId == EntityTypeCache.Get(typeof(Person)).Id) { relatedPersonIds.Add(changeRequest.EntityId); } else if (changeRequest.EntityTypeId == EntityTypeCache.Get(typeof(Group)).Id) { GroupService groupService = new GroupService(rockContext); var family = groupService.Get(changeRequest.EntityId); if (family != null) { relatedPersonIds.AddRange(family.Members.Select(m => m.PersonId)); } } DataViewService dataViewService = new DataViewService(rockContext); var dv = dataViewService.Get(blackListDV.Value); if (dv != null) { var qry = (IQueryable <Person>)dv.GetQuery(new DataViewGetQueryArgs { DatabaseTimeoutSeconds = 30 }); if (qry.Where(p => relatedPersonIds.Contains(p.Id)).Any()) { nbBlacklistWarning.Visible = true; } } } }
protected override void LoadViewState(object savedState) { base.LoadViewState(savedState); if (ViewState["Attendance"] != null) { string json = ViewState["Attendance"] as string; _attendance = Attendance.FromJsonAsList(json) ?? new List <Attendance>(); foreach (var attendee in _attendance) { attendee.PersonAlias = _personAliasService.Get(attendee.PersonAliasId.Value); } } else { _attendance = new List <Attendance>(); } }
private bool ModifyFrontPorchUser(int personAliasId) { // Fetch the person alias PersonAliasService personAliasService = new PersonAliasService(new RockContext()); PersonAlias personAlias = personAliasService.Get(personAliasId); FrontPorchUser user = new FrontPorchUser() { name = personAlias.Person.FullName, email = personAlias.Person.Email, userId = personAlias.Id }; // Always set the SecureNetworkSSID; user.secureNetworkSSID = GetAttributeValue("NetworkSSID"); var url = string.Format("https://{0}/api/user/modify", fpHost); HttpWebRequest request = ( HttpWebRequest )WebRequest.Create(url); request.Headers.Add(fpAuthenticationHeader); request.Method = "POST"; request.ContentType = "application/json"; try { JavaScriptSerializer js = new JavaScriptSerializer(); byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(js.Serialize(user)); request.ContentLength = byteArray.Length; // Get the request stream. Stream dataStream = request.GetRequestStream(); // Write the data to the request stream. dataStream.Write(byteArray, 0, byteArray.Length); // Close the Stream objec HttpWebResponse response = ( HttpWebResponse )request.GetResponse(); Stream resStream = response.GetResponseStream(); if (response.StatusCode == HttpStatusCode.OK) { return(true); } } catch (Exception e) { LogException(e); } return(false); }
public static DefinedValue GetMyMinistryLookup(int personID, String ministryAttribute) { DefinedValue MinistryLookup = null; PersonAliasService personAliasService = new PersonAliasService(new Rock.Data.RockContext()); var person = personAliasService.Get(personID).Person; person.LoadAttributes(); Guid?pa = person.GetAttributeValue(ministryAttribute).AsGuidOrNull(); DefinedValueService definedValueService = new DefinedValueService(new Rock.Data.RockContext()); if (pa.HasValue) { MinistryLookup = definedValueService.Get(pa.Value); } else { MinistryLookup = new DefinedValue(); } return(MinistryLookup); }
public static void UpdateCourseStatuses(int courseId, int personAliasId, bool passed) { RockContext rockContext = new RockContext(); CourseRequirementService courseRequirementService = new CourseRequirementService(rockContext); var courseRequirements = courseRequirementService.Queryable() .Where(r => r.CourseId == courseId) .ToList(); if (!courseRequirements.Any()) { return; } PersonAliasService personAliasService = new PersonAliasService(rockContext); var personAliasIds = personAliasService.Get(personAliasId) .Person.Aliases.Select(pa => pa.Id).ToList(); CourseRequirementStatusService courseStatusService = new CourseRequirementStatusService(rockContext); foreach (var courseRequirement in courseRequirements) { var status = courseStatusService.Queryable() .Where(s => s.CourseRequirementId == courseRequirement.Id) .Where(s => personAliasIds.Contains(s.PersonAliasId)) .FirstOrDefault(); if (status != null) { status.IsComplete = passed; if (status.IsComplete) { if (courseRequirement.DaysValid.HasValue) { status.ValidUntil = Rock.RockDateTime.Today.AddDays(courseRequirement.DaysValid.Value); } } } } rockContext.SaveChanges(); }
public override bool Execute(RockContext rockContext, WorkflowAction action, object entity, out List <string> errorMessages) { errorMessages = new List <string>(); var actionStep = GetActionAttributeValue(action, "ActionStep"); if (Encryption.DecryptString(action.Activity.Workflow.GetAttributeValue("SSN1")) == "***") { // ***'s mean to just ignore it. return(activateActivity(rockContext, action, "SuccessActivity")); } // Verify the SSN using regex string ssn = Encryption.DecryptString(action.Activity.Workflow.GetAttributeValue("SSN1")) + "-" + Encryption.DecryptString(action.Activity.Workflow.GetAttributeValue("SSN2")) + "-" + Encryption.DecryptString(action.Activity.Workflow.GetAttributeValue("SSN3")); if (Regex.Match(ssn, @"^(?!(123[ -]?45[ -]?6789)|((\d)\3\3[ -]?\3\3[ -]?\3\3\3\3))(\d{3}[- ]?\d{2}[- ]?\d{4})$").Success) { PersonAliasService personAliasService = new PersonAliasService(rockContext); // Store the SSN and then set it to ***'s PersonAlias personAlias = personAliasService.Get(action.Activity.Workflow.GetAttributeValue("Person").AsGuid()); personAlias.Person.LoadAttributes(); personAlias.Person.SetAttributeValue("SSN", Encryption.EncryptString(ssn)); personAlias.Person.SaveAttributeValues(); action.Activity.Workflow.SetAttributeValue("SSN1", Encryption.EncryptString("***")); action.Activity.Workflow.SetAttributeValue("SSN2", Encryption.EncryptString("**")); rockContext.SaveChanges(); } SetWorkflowAttributeValue(action, GetActionAttributeValue(action, "ErrorMessages").AsGuid(), ""); // If we get here, it was successful return(activateActivity(rockContext, action, "SuccessActivity")); }
/// <summary> /// Binds the grid. /// </summary> private void BindGrid() { using (var rockContext = new RockContext()) { var contextEntity = this.ContextEntity(); var workflowService = new WorkflowService(rockContext); var workflowActivityService = new WorkflowActivityService(rockContext); var attributeService = new AttributeService(rockContext); var attributeValueService = new AttributeValueService(rockContext); var personAliasService = new PersonAliasService(rockContext); var entityTypeService = new EntityTypeService(rockContext); Guid homeBoundPersonWorkflow = GetAttributeValue("HomeboundPersonWorkflow").AsGuid(); int entityTypeId = entityTypeService.Queryable().Where(et => et.Name == typeof(Workflow).FullName).FirstOrDefault().Id; string status = (contextEntity != null ? "Completed" : "Active"); var workflowType = new WorkflowTypeService(rockContext).Get(homeBoundPersonWorkflow); if (workflowType == null) { nbError.Visible = true; return; } var workflowTypeIdAsString = workflowType.Id.ToString(); var attributeIds = attributeService.Queryable() .Where(a => a.EntityTypeQualifierColumn == "WorkflowTypeId" && a.EntityTypeQualifierValue == workflowTypeIdAsString) .Select(a => a.Id).ToList(); // Look up the activity type for "Visitation" var visitationActivityIdAsString = workflowType.ActivityTypes.Where(at => at.Name == "Visitation Info").Select(at => at.Id.ToString()).FirstOrDefault(); var activityAttributeIds = attributeService.Queryable() .Where(a => a.EntityTypeQualifierColumn == "ActivityTypeId" && a.EntityTypeQualifierValue == visitationActivityIdAsString) .Select(a => a.Id).ToList(); var wfTmpqry = workflowService.Queryable().AsNoTracking() .Where(w => (w.WorkflowType.Guid == homeBoundPersonWorkflow) && (w.Status == "Active" || w.Status == status)); var visitQry = workflowActivityService.Queryable() .Join( attributeValueService.Queryable(), wa => wa.Id, av => av.EntityId.Value, (wa, av) => new { WorkflowActivity = wa, AttributeValue = av }) .Where(a => activityAttributeIds.Contains(a.AttributeValue.AttributeId)) .GroupBy(wa => wa.WorkflowActivity) .Select(obj => new { WorkflowActivity = obj.Key, AttributeValues = obj.Select(a => a.AttributeValue) }); if (contextEntity != null) { var personGuid = (( Person )contextEntity).Aliases.Select(a => a.Guid.ToString()).ToList(); var validWorkflowIds = new AttributeValueService(rockContext).Queryable() .Where(av => av.Attribute.Key == "HomeboundPerson" && personGuid.Contains(av.Value)).Select(av => av.EntityId); wfTmpqry = wfTmpqry.Where(w => validWorkflowIds.Contains(w.Id)); visitQry = visitQry.Where(w => validWorkflowIds.Contains(w.WorkflowActivity.WorkflowId)); gReport.Columns[10].Visible = true; } var visits = visitQry.ToList(); var workflows = wfTmpqry.Join( attributeValueService.Queryable(), obj => obj.Id, av => av.EntityId.Value, (obj, av) => new { Workflow = obj, AttributeValue = av }) .Where(a => attributeIds.Contains(a.AttributeValue.AttributeId)) .GroupBy(obj => obj.Workflow) .Select(obj => new { Workflow = obj.Key, AttributeValues = obj.Select(a => a.AttributeValue) }) .ToList(); var qry = workflows.AsQueryable().GroupJoin(visits.AsQueryable(), wf => wf.Workflow.Id, wa => wa.WorkflowActivity.WorkflowId, (wf, wa) => new { WorkflowObjects = wf, VisitationActivities = wa }) .Select(obj => new { Workflow = obj.WorkflowObjects.Workflow, AttributeValues = obj.WorkflowObjects.AttributeValues, VisitationActivities = obj.VisitationActivities }).ToList(); if (contextEntity == null) { // Make sure they aren't deceased qry = qry.AsQueryable().Where(w => ! (personAliasService.Get(w.AttributeValues.Where(av => av.AttributeKey == "HomeboundPerson").Select(av => av.Value).FirstOrDefault().AsGuid()) != null ? personAliasService.Get(w.AttributeValues.Where(av => av.AttributeKey == "HomeboundPerson").Select(av => av.Value).FirstOrDefault().AsGuid()).Person.IsDeceased : false)).ToList(); } var newQry = qry.Select(w => new { Id = w.Workflow.Id, Workflow = w.Workflow, Name = w.Workflow.Name, Address = new Func <string>(() => { PersonAlias p = personAliasService.Get(w.AttributeValues.Where(av => av.AttributeKey == "HomeboundPerson").Select(av => av.Value).FirstOrDefault().AsGuid()); Location homeLocation = p.Person.GetHomeLocation(); if (homeLocation == null) { return(""); } return(homeLocation.Street1 + homeLocation.City + " " + homeLocation.State + ", " + homeLocation.PostalCode); })(), HomeboundPerson = new Func <Person>(() => { return(personAliasService.Get(w.AttributeValues.Where(av => av.AttributeKey == "HomeboundPerson").Select(av => av.Value).FirstOrDefault().AsGuid()).Person); })(), Age = personAliasService.Get(w.AttributeValues.Where(av => av.AttributeKey == "HomeboundPerson").Select(av => av.Value).FirstOrDefault().AsGuid()).Person.Age, StartDate = w.AttributeValues.Where(av => av.AttributeKey == "StartDate").Select(av => av.ValueAsDateTime).FirstOrDefault(), Description = w.AttributeValues.Where(av => av.AttributeKey == "HomeboundResidentDescription").Select(av => av.ValueFormatted).FirstOrDefault(), Visits = w.VisitationActivities.Where(a => a.AttributeValues != null && a.AttributeValues.Where(av => av.AttributeKey == "VisitDate" && !string.IsNullOrWhiteSpace(av.Value)).Any()).Count(), LastVisitor = new Func <string>(() => { var visitor = w.VisitationActivities.Where(a => a.AttributeValues != null && a.AttributeValues.Where(av => av.AttributeKey == "VisitDate" && !string.IsNullOrWhiteSpace(av.Value)).Any()).Select(va => va.AttributeValues.Where(av => av.AttributeKey == "Visitor").LastOrDefault()).LastOrDefault(); if (visitor != null) { return(visitor.ValueFormatted); } return("N/A"); })(), LastVisitDate = w.VisitationActivities.Where(a => a.AttributeValues != null && a.AttributeValues.Where(av => av.AttributeKey == "VisitDate" && !string.IsNullOrWhiteSpace(av.Value)).Any()).Select(va => va.AttributeValues.Where(av => av.AttributeKey == "VisitDate").LastOrDefault()).Select(av => av == null ? "N/A" : av.ValueFormatted).DefaultIfEmpty("N/A").LastOrDefault(), LastVisitNotes = w.VisitationActivities.Where(a => a.AttributeValues != null && a.AttributeValues.Where(av => av.AttributeKey == "VisitDate" && !string.IsNullOrWhiteSpace(av.Value)).Any()).Select(va => va.AttributeValues.Where(av => av.AttributeKey == "VisitNote").LastOrDefault()).Select(av => av == null ? "N/A" : av.ValueFormatted).DefaultIfEmpty("N/A").LastOrDefault(), EndDate = w.AttributeValues.Where(av => av.AttributeKey == "EndDate").Select(av => av.ValueFormatted).FirstOrDefault(), Status = w.Workflow.Status, Communion = w.AttributeValues.Where(av => av.AttributeKey == "Communion").Select(av => av.ValueFormatted).FirstOrDefault(), Actions = "" }).OrderBy(w => w.Name).ToList().AsQueryable(); SortProperty sortProperty = gReport.SortProperty; if (sortProperty != null) { gReport.SetLinqDataSource(newQry.Sort(sortProperty)); } else { gReport.SetLinqDataSource(newQry.OrderBy(p => p.Name)); } gReport.DataBind(); } }
private void SaveAttendance(Group group, Location location, Schedule schedule) { PersonAliasService personAliasService = new PersonAliasService(rockContext); var personAlias = personAliasService.Get(personAliasGuid.AsGuid()); if (personAlias == null) { errorMessages.Add("No Person Found"); return; } ; var memberOptions = keywordSearchType = GetAttributeValue(action, "MemberOptions", true); if (memberOptions != "0") //Not just add attendance { GroupMemberService groupMemberService = new GroupMemberService(rockContext); // get group member var groupMember = groupMemberService.Queryable() .Where(m => m.GroupId == group.Id && m.PersonId == personAlias.PersonId) .FirstOrDefault(); if (groupMember == null) { if (memberOptions == "1") //Create new member { if (group != null) { groupMember = new GroupMember(); groupMember.GroupId = group.Id; groupMember.PersonId = personAlias.PersonId; groupMember.GroupMemberStatus = GroupMemberStatus.Active; groupMember.GroupRole = group.GroupType.DefaultGroupRole; groupMemberService.Add(groupMember); rockContext.SaveChanges(); } } else //Must be in group { action.AddLogEntry(string.Format("{0} was not a member of the group {1} and the action was not configured to add them.", personAlias.Person.FullName, group.Name)); return; } } } //Save attendance AttendanceService attendanceService = new AttendanceService(rockContext); attendanceService.AddOrUpdate(personAlias.Id, Rock.RockDateTime.Now, group.Id, location?.Id, schedule?.Id, location?.CampusId); //Set Attributes for Group Location and Schedule var groupAttribute = AttributeCache.Get(GetAttributeValue(action, "GroupOutput").AsGuid(), rockContext); if (groupAttribute != null) { SetWorkflowAttributeValue(action, groupAttribute.Guid, group.Guid.ToString()); } var locationAttribute = AttributeCache.Get(GetAttributeValue(action, "LocationOutput").AsGuid(), rockContext); if (locationAttribute != null && location != null) { SetWorkflowAttributeValue(action, locationAttribute.Guid, location.Guid.ToString()); } var scheduleAttribute = AttributeCache.Get(GetAttributeValue(action, "ScheduleOutput").AsGuid(), rockContext); if (scheduleAttribute != null && schedule != null) { SetWorkflowAttributeValue(action, scheduleAttribute.Guid, schedule.Guid.ToString()); } }
/// <summary> /// Executes the specified workflow. /// </summary> /// <param name="rockContext">The rock context.</param> /// <param name="action">The action.</param> /// <param name="entity">The entity.</param> /// <param name="errorMessages">The error messages.</param> /// <returns></returns> public override bool Execute(RockContext rockContext, WorkflowAction action, Object entity, out List <string> errorMessages) { errorMessages = new List <string>(); var personGuid = GetAttributeValue(action, "Person", true).AsGuidOrNull(); if (personGuid == null) { errorMessages.Add("Person Add History requires a valid person"); return(false); } var categoryGuid = GetAttributeValue(action, "Category").AsGuid(); var category = new CategoryService(rockContext).Get(categoryGuid); if (category == null) { errorMessages.Add("Person Add History requires a valid category"); return(false); } PersonAliasService personAliasService = new PersonAliasService(rockContext); var personAlias = personAliasService.Get(personGuid.Value); if (personAlias != null) { var person = personAlias.Person; var entityTypeId = EntityTypeCache.GetId(typeof(Rock.Model.Person)); var workflowEntityTypeId = EntityTypeCache.GetId(typeof(Rock.Model.Workflow)); var mergeFields = GetMergeFields(action); var caption = GetAttributeValue(action, "Caption").ResolveMergeFields(mergeFields); var summary = GetAttributeValue(action, "Summary").ResolveMergeFields(mergeFields); var verb = GetAttributeValue(action, "Verb").ResolveMergeFields(mergeFields); var personChanges = new History.HistoryChangeList(); personChanges.AddCustom(verb, History.HistoryChangeType.Record.ToString(), summary.Truncate(250)); personChanges.First().Caption = caption; if (action?.Activity?.Workflow != null && action.Activity.WorkflowId != 0) { personChanges.First().RelatedEntityTypeId = workflowEntityTypeId; personChanges.First().RelatedEntityId = action.Activity.WorkflowId; } HistoryService.SaveChanges( rockContext, typeof(Rock.Model.Person), category.Guid, person.Id, personChanges, true ); return(true); } else { errorMessages.Add("Person Add History requires a valid person"); return(false); } }
private IQueryable <HospitalRow> GetQuery(RockContext rockContext) { var contextEntity = this.ContextEntity(); var workflowService = new WorkflowService(rockContext); var workflowActivityService = new WorkflowActivityService(rockContext); var attributeService = new AttributeService(rockContext); var attributeValueService = new AttributeValueService(rockContext); var personAliasService = new PersonAliasService(rockContext); var definedValueService = new DefinedValueService(rockContext); var entityTypeService = new EntityTypeService(rockContext); int entityTypeId = entityTypeService.Queryable().Where(et => et.Name == typeof(Workflow).FullName).FirstOrDefault().Id; string status = (contextEntity != null ? "Completed" : "Active"); Guid hospitalWorkflow = GetAttributeValue("HospitalAdmissionWorkflow").AsGuid(); var workflowType = new WorkflowTypeService(rockContext).Get(hospitalWorkflow); var workflowTypeIdAsString = workflowType.Id.ToString(); var attributeIds = attributeService.Queryable() .Where(a => a.EntityTypeQualifierColumn == "WorkflowTypeId" && a.EntityTypeQualifierValue == workflowTypeIdAsString) .Select(a => a.Id).ToList(); // Look up the activity type for "Visitation" var visitationActivityIdAsString = workflowType.ActivityTypes.Where(at => at.Name == "Visitation Info").Select(at => at.Id.ToString()).FirstOrDefault(); var activityAttributeIds = attributeService.Queryable() .Where(a => a.EntityTypeQualifierColumn == "ActivityTypeId" && a.EntityTypeQualifierValue == visitationActivityIdAsString) .Select(a => a.Id).ToList(); var wfTmpqry = workflowService.Queryable().AsNoTracking() .Where(w => (w.WorkflowType.Guid == hospitalWorkflow) && (w.Status == "Active" || w.Status == status)); var visitQry = workflowActivityService.Queryable() .Join( attributeValueService.Queryable(), wa => wa.Id, av => av.EntityId.Value, (wa, av) => new { WorkflowActivity = wa, AttributeValue = av }) .Where(a => activityAttributeIds.Contains(a.AttributeValue.AttributeId)) .GroupBy(wa => wa.WorkflowActivity) .Select(obj => new { WorkflowActivity = obj.Key, AttributeValues = obj.Select(a => a.AttributeValue) }); if (contextEntity != null) { var personGuid = (( Person )contextEntity).Aliases.Select(a => a.Guid.ToString()).ToList(); var validWorkflowIds = new AttributeValueService(rockContext).Queryable() .Where(av => av.Attribute.Key == "PersonToVisit" && personGuid.Contains(av.Value)).Select(av => av.EntityId); wfTmpqry = wfTmpqry.Where(w => validWorkflowIds.Contains(w.Id)); visitQry = visitQry.Where(w => validWorkflowIds.Contains(w.WorkflowActivity.WorkflowId)); gReport.Columns[10].Visible = true; } var visits = visitQry.ToList(); var workflows = wfTmpqry.Join( attributeValueService.Queryable(), obj => obj.Id, av => av.EntityId.Value, (obj, av) => new { Workflow = obj, AttributeValue = av }) .Where(a => attributeIds.Contains(a.AttributeValue.AttributeId)) .GroupBy(obj => obj.Workflow) .Select(obj => new { Workflow = obj.Key, AttributeValues = obj.Select(a => a.AttributeValue) }) .ToList(); var qry = workflows.AsQueryable().GroupJoin(visits.AsQueryable(), wf => wf.Workflow.Id, wa => wa.WorkflowActivity.WorkflowId, (wf, wa) => new { Workflow = wf, WorkflowActivities = wa }) .Select(obj => new { Workflow = obj.Workflow.Workflow, AttributeValues = obj.Workflow.AttributeValues, VisitationActivities = obj.WorkflowActivities }).ToList(); if (contextEntity == null) { // Make sure they aren't deceased qry = qry.AsQueryable().Where(w => ! (personAliasService.Get(w.AttributeValues.Where(av => av.AttributeKey == "PersonToVisit").Select(av => av.Value).FirstOrDefault().AsGuid()) != null ? personAliasService.Get(w.AttributeValues.Where(av => av.AttributeKey == "PersonToVisit").Select(av => av.Value).FirstOrDefault().AsGuid()).Person.IsDeceased : false)).ToList(); } var newQry = qry.Select(w => new HospitalRow { Id = w.Workflow.Id, Workflow = w.Workflow, Name = w.Workflow.Name, Hospital = w.AttributeValues.Where(av => av.AttributeKey == "Hospital").Select(av => av.ValueFormatted).FirstOrDefault(), HospitalAddress = new Func <string>(() => { DefinedValueCache dv = DefinedValueCache.Get(w.AttributeValues.Where(av => av.AttributeKey == "Hospital").Select(av => av.Value).FirstOrDefault().AsGuid()); return(dv.AttributeValues["Qualifier1"].ValueFormatted + " " + dv.AttributeValues["Qualifier2"].ValueFormatted + " " + dv.AttributeValues["Qualifier3"].ValueFormatted + ", " + dv.AttributeValues["Qualifier4"].ValueFormatted); })(), PersonToVisit = new Func <Person>(() => { PersonAlias pa = personAliasService.Get(w.AttributeValues.Where(av => av.AttributeKey == "PersonToVisit").Select(av => av.Value).FirstOrDefault().AsGuid()); if (pa != null) { return(pa.Person); } return(new Person()); })(), Age = new Func <int?>(() => { PersonAlias pa = personAliasService.Get(w.AttributeValues.Where(av => av.AttributeKey == "PersonToVisit").Select(av => av.Value).FirstOrDefault().AsGuid()); if (pa != null) { return(pa.Person.Age); } return(null); })(), Room = w.AttributeValues.Where(av => av.AttributeKey == "Room").Select(av => av.ValueFormatted).FirstOrDefault(), AdmitDate = w.AttributeValues.Where(av => av.AttributeKey == "AdmitDate").Select(av => av.ValueAsDateTime).FirstOrDefault(), Description = w.AttributeValues.Where(av => av.AttributeKey == "VisitationRequestDescription").Select(av => av.ValueFormatted).FirstOrDefault(), Visits = w.VisitationActivities.Where(a => a.AttributeValues != null && a.AttributeValues.Where(av => av.AttributeKey == "VisitDate" && !string.IsNullOrWhiteSpace(av.Value)).Any()).Count(), LastVisitor = new Func <string>(() => { var visitor = w.VisitationActivities.Where(a => a.AttributeValues != null && a.AttributeValues.Where(av => av.AttributeKey == "VisitDate" && !string.IsNullOrWhiteSpace(av.Value)).Any()).Select(va => va.AttributeValues.Where(av => av.AttributeKey == "Visitor").LastOrDefault()).LastOrDefault(); if (visitor != null) { return(visitor.ValueFormatted); } return("N/A"); })(), LastVisitDate = w.VisitationActivities.Where(a => a.AttributeValues != null && a.AttributeValues.Where(av => av.AttributeKey == "VisitDate" && !string.IsNullOrWhiteSpace(av.Value)).Any()).Select(va => va.AttributeValues.Where(av => av.AttributeKey == "VisitDate").LastOrDefault()).Select(av => av == null ? "N/A" : av.ValueFormatted).DefaultIfEmpty("N/A").LastOrDefault(), LastVisitNotes = w.VisitationActivities.Where(a => a.AttributeValues != null && a.AttributeValues.Where(av => av.AttributeKey == "VisitDate" && !string.IsNullOrWhiteSpace(av.Value)).Any()).Select(va => va.AttributeValues.Where(av => av.AttributeKey == "VisitNote").LastOrDefault()).Select(av => av == null ? "N/A" : av.ValueFormatted).DefaultIfEmpty("N/A").LastOrDefault(), DischargeDate = w.AttributeValues.Where(av => av.AttributeKey == "DischargeDate").Select(av => av.ValueFormatted).FirstOrDefault(), Status = w.Workflow.Status, Communion = w.AttributeValues.Where(av => av.AttributeKey == "Communion").Select(av => av.ValueFormatted).FirstOrDefault(), Actions = "" }).ToList().AsQueryable().OrderBy(p => p.Hospital).ThenBy(p => p.PersonToVisit.LastName); return(newQry); }
private void BindGrid() { var changeId = hfChangeId.ValueAsInt(); if (changeId == 0) { changeId = PageParameter("ChangeRequest").AsInteger(); hfChangeId.SetValue(changeId); } RockContext rockContext = new RockContext(); ChangeRequestService changeRequestService = new ChangeRequestService(rockContext); ChangeRequest changeRequest = changeRequestService.Get(changeId); if (changeRequest == null) { return; } if (!IsUserAuthorized(Rock.Security.Authorization.EDIT) && (CurrentPerson == null || !CurrentPerson.Aliases.Select(a => a.Id).Contains(changeRequest.RequestorAliasId))) { this.Visible = false; return; } CheckForBlacklist(changeRequest); var link = ""; if (changeRequest.EntityTypeId == EntityTypeCache.Get(typeof(PersonAlias)).Id) { PersonAliasService personAliasService = new PersonAliasService(rockContext); var personAlias = personAliasService.Get(changeRequest.EntityId); if (personAlias != null) { link = string.Format("<a href='/Person/{0}' target='_blank' class='btn btn-default btn-sm'><i class='fa fa-user'></i></a>", personAlias.Person.Id); } } lName.Text = string.Format(@" <h1 class='panel-title'>{0} {1}</h1> <div class='panel-labels'> <span class='label label-default'> Requested by: <a href='/Person/{2}' target='_blank'>{3}</a> </span> <span class='label label-{4}'> {5} </span> </div>", link, changeRequest.Name, changeRequest.RequestorAlias.PersonId, changeRequest.RequestorAlias.Person.FullName, changeRequest.IsComplete ? "primary" : "success", changeRequest.IsComplete ? "Complete" : "Active"); var changeRecords = changeRequest.ChangeRecords.ToList(); var entity = ChangeRequest.GetEntity(changeRequest.EntityTypeId, changeRequest.EntityId, rockContext); foreach (var changeRecord in changeRecords) { FormatValues(changeRequest.EntityTypeId, entity, changeRecord, rockContext); } if (changeRecords.Any()) { gRecords.DataSource = changeRecords; gRecords.DataBind(); } else { gRecords.Visible = false; } if (changeRequest.RequestorComment.IsNotNullOrWhiteSpace()) { ltRequestComments.Visible = true; ltRequestComments.Text = changeRequest.RequestorComment; } ltApproverComment.Text = changeRequest.ApproverComment; tbApproverComment.Text = changeRequest.ApproverComment; if (!IsUserAuthorized(Rock.Security.Authorization.EDIT)) { btnComplete.Visible = false; tbApproverComment.Visible = false; ltApproverComment.Visible = true; (( DataControlField )gRecords.Columns .Cast <DataControlField>() .Where(fld => (fld.HeaderText == "Is Rejected")) .SingleOrDefault()).Visible = false; } }
private IQueryable <CommunionData> getQuery <T>() { using (var rockContext = new RockContext()) { var workflowService = new WorkflowService(rockContext); var attributeService = new AttributeService(rockContext); var attributeValueService = new AttributeValueService(rockContext); var personAliasService = new PersonAliasService(rockContext); var personService = new PersonService(rockContext); var definedValueService = new DefinedValueService(rockContext); Guid hospitalWorkflow = GetAttributeValue("HospitalAdmissionWorkflow").AsGuid(); Guid nursingHomeAdmissionWorkflow = GetAttributeValue("NursingHomeResidentWorkflow").AsGuid(); Guid homeBoundPersonWorkflow = GetAttributeValue("HomeboundPersonWorkflow").AsGuid(); Guid hospitalList = GetAttributeValue("HospitalList").AsGuid(); Guid nursingHomeList = GetAttributeValue("NursingHomeList").AsGuid(); var workflowTypesIdAsStrings = new WorkflowTypeService(rockContext).Queryable() .Where(wt => wt.Guid == hospitalWorkflow || wt.Guid == nursingHomeAdmissionWorkflow || wt.Guid == homeBoundPersonWorkflow ) .ToList() .Select(wf => wf.Id.ToString()) .ToList(); var attributeIds = attributeService.Queryable() .Where(a => a.EntityTypeQualifierColumn == "WorkflowTypeId" && workflowTypesIdAsStrings.Contains(a.EntityTypeQualifierValue)) .Select(a => a.Id).ToList(); var wfTmpqry = workflowService.Queryable().AsNoTracking() .Where(w => ( w.WorkflowType.Guid == hospitalWorkflow || w.WorkflowType.Guid == nursingHomeAdmissionWorkflow || w.WorkflowType.Guid == homeBoundPersonWorkflow ) && (w.Status == "Active")); var tqry = wfTmpqry.Join(attributeValueService.Queryable(), obj => obj.Id, av => av.EntityId.Value, (obj, av) => new { Workflow = obj, AttributeValue = av }) .Where(a => attributeIds.Contains(a.AttributeValue.AttributeId)) .GroupBy(obj => obj.Workflow) .Select(obj => new { Workflow = obj.Key, AttributeValues = obj.Select(a => a.AttributeValue) }); var qry = tqry.ToList(); List <DefinedValue> facilities = definedValueService.Queryable().Where(dv => dv.DefinedType.Guid == hospitalList || dv.DefinedType.Guid == nursingHomeList).ToList(); facilities.ForEach(h => { h.LoadAttributes(); }); var newQry = qry.Select(w => new CommunionData { Campus = new Func <Campus>(() => { Campus campus = null; AttributeValue personAliasAV = w.AttributeValues.AsQueryable().Where(av => av.AttributeKey == "PersonToVisit" || av.AttributeKey == "HomeboundPerson").FirstOrDefault(); if (personAliasAV != null) { PersonAlias pa = personAliasService.Get(personAliasAV.Value.AsGuid()); if (pa != null) { campus = pa.Person.GetCampus(); } } if (campus == null) { campus = new Campus() { Name = "Unknown" }; } return(campus); })(), Person = GetPerson(personAliasService, w.AttributeValues), Age = GetPerson(personAliasService, w.AttributeValues).Age, Description = w.AttributeValues.AsQueryable().Where(av => av.AttributeKey == "VisitationRequestDescription" || av.AttributeKey == "HomeboundResidentDescription").Select(av => av.ValueFormatted).FirstOrDefault(), Location = new Func <string>(() => { return(w.AttributeValues.AsQueryable().Where(av => av.AttributeKey == "NursingHome" || av.AttributeKey == "Hospital").Select(av => av.ValueFormatted).DefaultIfEmpty("Home").FirstOrDefault()); })(), Address = GetLocation(personService, w.AttributeValues, facilities).Street1 + " " + GetLocation(personService, w.AttributeValues, facilities).Street2, City = GetLocation(personService, w.AttributeValues, facilities).City, State = GetLocation(personService, w.AttributeValues, facilities).State, PostalCode = GetLocation(personService, w.AttributeValues, facilities).PostalCode, FacilityNumber = GetFacilityNumber(personService, w.AttributeValues, facilities), Room = w.AttributeValues.AsQueryable().Where(av => av.AttributeKey == "Room").Select(av => av.ValueFormatted).FirstOrDefault(), AdmitDate = w.AttributeValues.AsQueryable().Where(av => av.AttributeKey == "AdmitDate" || av.AttributeKey == "StartDate").Select(av => av.ValueFormatted).FirstOrDefault(), Status = w.Workflow.Status, Communion = w.AttributeValues.AsQueryable().Where(av => av.AttributeKey == "Communion").FirstOrDefault().ValueFormatted }) .Where(o => o.Communion.AsBoolean() && !o.Person.IsDeceased) .OrderBy(a => a.PostalCode) .ThenBy(a => a.Address) .ToList() .AsQueryable(); List <COMMUNION_STATES> states = cblState.Items.Cast <ListItem>().Where(i => i.Selected).Select(i => ( COMMUNION_STATES )int.Parse(i.Value)).ToList(); if (states.Count > 0) { newQry = newQry.Where(o => (states.Contains(COMMUNION_STATES.KY) && o.State == "KY") || (states.Contains(COMMUNION_STATES.IN) && o.State == "IN") || ((states.Contains(COMMUNION_STATES.Other) && o.State != "IN" && o.State != "KY"))); } List <int> campuses = cpCampus.Items.Cast <ListItem>().Where(i => i.Selected).Select(i => int.Parse(i.Value)).ToList(); if (campuses.Count > 0) { newQry = newQry.Where(o => campuses.Contains(o.Campus.Id)); } //AddGridColumns( newQry.FirstOrDefault() ); SortProperty sortProperty = gReport.SortProperty; if (sortProperty != null) { newQry = newQry.Sort(sortProperty); } return(newQry); } }
/// <summary> /// Executes the specified workflow. /// </summary> /// <param name="rockContext">The rock context.</param> /// <param name="action">The action.</param> /// <param name="entity">The entity.</param> /// <param name="errorMessages">The error messages.</param> /// <returns></returns> public override bool Execute(RockContext rockContext, WorkflowAction action, Object entity, out List <string> errorMessages) { errorMessages = new List <string>(); var attribute = AttributeCache.Read(GetAttributeValue(action, "PersonAttribute").AsGuid(), rockContext); if (attribute != null) { var mergeFields = GetMergeFields(action); string firstName = GetAttributeValue(action, "FirstName", true).ResolveMergeFields(mergeFields); string lastName = GetAttributeValue(action, "LastName", true).ResolveMergeFields(mergeFields); string email = GetAttributeValue(action, "Email", true).ResolveMergeFields(mergeFields); string phone = GetAttributeValue(action, "Phone", true).ResolveMergeFields(mergeFields); DateTime?dateofBirth = GetAttributeValue(action, "DOB", true).AsDateTime(); Guid? addressGuid = GetAttributeValue(action, "Address", true).AsGuidOrNull(); Guid? familyOrPersonGuid = GetAttributeValue(action, "FamilyAttribute", true).AsGuidOrNull(); Location address = null; // Set the street and postal code if we have an address if (addressGuid.HasValue) { LocationService addressService = new LocationService(rockContext); address = addressService.Get(addressGuid.Value); } if (string.IsNullOrWhiteSpace(firstName) || string.IsNullOrWhiteSpace(lastName) || (string.IsNullOrWhiteSpace(email) && string.IsNullOrWhiteSpace(phone) && !dateofBirth.HasValue && (address == null || address != null && string.IsNullOrWhiteSpace(address.Street1))) ) { errorMessages.Add("First Name, Last Name, and one of Email, Phone, DoB, or Address Street are required. One or more of these values was not provided!"); } else { Rock.Model.Person person = null; PersonAlias personAlias = null; var personService = new PersonService(rockContext); var people = personService.GetByMatch(firstName, lastName, dateofBirth, email, phone, address?.Street1, address?.PostalCode).ToList(); if (people.Count == 1 && // Make sure their email matches. If it doesn't, we need to go ahead and create a new person to be matched later. (string.IsNullOrWhiteSpace(email) || (people.First().Email != null && email.ToLower().Trim() == people.First().Email.ToLower().Trim())) ) { person = people.First(); personAlias = person.PrimaryAlias; } else if (!GetAttributeValue(action, "MatchOnly").AsBoolean()) { // Add New Person person = new Rock.Model.Person(); person.FirstName = firstName; person.LastName = lastName; person.IsEmailActive = true; person.Email = email; if (dateofBirth.HasValue) { person.BirthDay = dateofBirth.Value.Day; person.BirthMonth = dateofBirth.Value.Month; person.BirthYear = dateofBirth.Value.Year; } person.EmailPreference = EmailPreference.EmailAllowed; person.RecordTypeValueId = DefinedValueCache.Read(Rock.SystemGuid.DefinedValue.PERSON_RECORD_TYPE_PERSON.AsGuid()).Id; var defaultConnectionStatus = DefinedValueCache.Read(GetAttributeValue(action, "DefaultConnectionStatus").AsGuid()); if (defaultConnectionStatus != null) { person.ConnectionStatusValueId = defaultConnectionStatus.Id; } var defaultRecordStatus = DefinedValueCache.Read(GetAttributeValue(action, "DefaultRecordStatus").AsGuid()); if (defaultRecordStatus != null) { person.RecordStatusValueId = defaultRecordStatus.Id; } var defaultCampus = CampusCache.Read(GetAttributeValue(action, "DefaultCampus", true).AsGuid()); // Get the default family if applicable Group family = null; if (familyOrPersonGuid.HasValue) { PersonAliasService personAliasService = new PersonAliasService(rockContext); family = personAliasService.Get(familyOrPersonGuid.Value)?.Person?.GetFamily(); if (family == null) { GroupService groupService = new GroupService(rockContext); family = groupService.Get(familyOrPersonGuid.Value); } } var familyGroup = SaveNewPerson(person, family, (defaultCampus != null ? defaultCampus.Id : ( int? )null), rockContext); if (familyGroup != null && familyGroup.Members.Any()) { personAlias = person.PrimaryAlias; // If we have an address, go ahead and save it here. if (address != null) { GroupLocation location = new GroupLocation(); location.GroupLocationTypeValueId = DefinedValueCache.Read(Rock.SystemGuid.DefinedValue.GROUP_LOCATION_TYPE_HOME).Id; location.Location = address; familyGroup.GroupLocations.Add(location); } } } // Save/update the phone number if (!string.IsNullOrWhiteSpace(phone)) { List <string> changes = new List <string>(); var numberType = DefinedValueCache.Read(GetAttributeValue(action, "DefaultPhoneNumberType").AsGuid()); if (numberType != null) { // gets value indicating if phone number is unlisted string unlistedValue = GetAttributeValue(action, "Unlisted"); Guid? unlistedValueGuid = unlistedValue.AsGuidOrNull(); if (unlistedValueGuid.HasValue) { unlistedValue = action.GetWorklowAttributeValue(unlistedValueGuid.Value); } else { unlistedValue = unlistedValue.ResolveMergeFields(GetMergeFields(action)); } bool unlisted = unlistedValue.AsBoolean(); // gets value indicating if messaging should be enabled for phone number string smsEnabledValue = GetAttributeValue(action, "MessagingEnabled"); Guid? smsEnabledValueGuid = smsEnabledValue.AsGuidOrNull(); if (smsEnabledValueGuid.HasValue) { smsEnabledValue = action.GetWorklowAttributeValue(smsEnabledValueGuid.Value); } else { smsEnabledValue = smsEnabledValue.ResolveMergeFields(GetMergeFields(action)); } bool smsEnabled = smsEnabledValue.AsBoolean(); var phoneModel = person.PhoneNumbers.FirstOrDefault(p => p.NumberTypeValueId == numberType.Id); string oldPhoneNumber = phoneModel != null ? phoneModel.NumberFormattedWithCountryCode : string.Empty; string newPhoneNumber = PhoneNumber.CleanNumber(phone); if (newPhoneNumber != string.Empty && newPhoneNumber != oldPhoneNumber) { if (phoneModel == null) { phoneModel = new PhoneNumber(); person.PhoneNumbers.Add(phoneModel); phoneModel.NumberTypeValueId = numberType.Id; } else { oldPhoneNumber = phoneModel.NumberFormattedWithCountryCode; } phoneModel.Number = newPhoneNumber; phoneModel.IsUnlisted = unlisted; phoneModel.IsMessagingEnabled = smsEnabled; History.EvaluateChange( changes, string.Format("{0} Phone", numberType.Value), oldPhoneNumber, phoneModel.NumberFormattedWithCountryCode); } } } if (person != null && personAlias != null) { SetWorkflowAttributeValue(action, attribute.Guid, personAlias.Guid.ToString()); action.AddLogEntry(string.Format("Set '{0}' attribute to '{1}'.", attribute.Name, person.FullName)); return(true); } else if (!GetAttributeValue(action, "MatchOnly").AsBoolean()) { errorMessages.Add("Person or Primary Alias could not be determined!"); } } } else { errorMessages.Add("Person Attribute could not be found!"); } if (errorMessages.Any()) { errorMessages.ForEach(m => action.AddLogEntry(m, true)); return(false); } return(true); }
public IQueryable <NursingHomeRow> GetQuery(RockContext rockContext) { var contextEntity = this.ContextEntity(); var workflowService = new WorkflowService(rockContext); var workflowActivityService = new WorkflowActivityService(rockContext); var attributeService = new AttributeService(rockContext); var attributeValueService = new AttributeValueService(rockContext); var personAliasService = new PersonAliasService(rockContext); var definedValueService = new DefinedValueService(rockContext); var entityTypeService = new EntityTypeService(rockContext); var groupMemberService = new GroupMemberService(rockContext); var groupService = new GroupService(rockContext); Guid nursingHomeAdmissionWorkflow = GetAttributeValue("NursingHomeResidentWorkflow").AsGuid(); Guid nursingHomeList = GetAttributeValue("NursingHomeList").AsGuid(); Guid volunteerGroup = GetAttributeValue("VolunteerGroup").AsGuid(); Group groupId = new Group(); List <DefinedValueCache> facilities = DefinedTypeCache.Get(nursingHomeList).DefinedValues; Dictionary <Guid, string> volunteerList = new Dictionary <Guid, string>(); groupId = groupService.GetByGuid(volunteerGroup); var groupMemberEntityTypeId = EntityTypeCache.Get(typeof(GroupMember)).Id; var groupMemberAttributeQry = attributeService.Queryable() .Where(a => a.EntityTypeId == groupMemberEntityTypeId) .Select(a => a.Id); var groupMemberAttributeValueQry = attributeValueService.Queryable() .Where(av => groupMemberAttributeQry.Contains(av.AttributeId)); if (groupId.IsNotNull()) { var groupMemberList = groupMemberService.Queryable() .Where(a => a.GroupId == groupId.Id && a.GroupMemberStatus == GroupMemberStatus.Active) .GroupJoin(groupMemberAttributeValueQry, gm => gm.Id, av => av.EntityId, (gm, av) => new { GroupMember = gm, GroupMemberAttributeValues = av }) .ToList(); var groupMembers = new List <GroupMember>(); foreach (var set in groupMemberList) { var groupMember = set.GroupMember; groupMember.Attributes = set.GroupMemberAttributeValues .ToDictionary(av => av.AttributeKey, av => AttributeCache.Get(av.AttributeId)); groupMember.AttributeValues = set.GroupMemberAttributeValues .ToDictionary(av => av.AttributeKey, av => new AttributeValueCache(av)); groupMembers.Add(groupMember); } foreach (var nursingHome in facilities) { foreach (var groupMember in groupMembers) { if (groupMember.GetAttributeValue("NursingHomes").IsNotNullOrWhiteSpace()) { if (groupMember.GetAttributeValue("NursingHomes").ToLower().Contains(nursingHome.Guid.ToString().ToLower())) { if (volunteerList.ContainsKey(nursingHome.Guid)) { volunteerList[nursingHome.Guid] = volunteerList[nursingHome.Guid] + ", " + groupMember.EntityStringValue; } else { volunteerList.Add(nursingHome.Guid, groupMember.EntityStringValue); } } } } } } int entityTypeId = entityTypeService.Queryable().Where(et => et.Name == typeof(Workflow).FullName).FirstOrDefault().Id; string status = (contextEntity != null ? "Completed" : "Active"); var workflowType = new WorkflowTypeService(rockContext).Get(nursingHomeAdmissionWorkflow); var workflowTypeIdAsString = workflowType.Id.ToString(); var attributeIds = attributeService.Queryable() .Where(a => a.EntityTypeQualifierColumn == "WorkflowTypeId" && a.EntityTypeQualifierValue == workflowTypeIdAsString) .Select(a => a.Id).ToList(); // Look up the activity type for "Visitation" var visitationActivityIdAsString = workflowType.ActivityTypes.Where(at => at.Name == "Visitation Info").Select(at => at.Id.ToString()).FirstOrDefault(); var activityAttributeIds = attributeService.Queryable() .Where(a => a.EntityTypeQualifierColumn == "ActivityTypeId" && a.EntityTypeQualifierValue == visitationActivityIdAsString) .Select(a => a.Id).ToList(); var wfTmpqry = workflowService.Queryable().AsNoTracking() .Where(w => (w.WorkflowType.Guid == nursingHomeAdmissionWorkflow) && (w.Status == "Active" || w.Status == status)); var visitQry = workflowActivityService.Queryable() .Join( attributeValueService.Queryable(), wa => wa.Id, av => av.EntityId.Value, (wa, av) => new { WorkflowActivity = wa, AttributeValue = av }) .Where(a => activityAttributeIds.Contains(a.AttributeValue.AttributeId)) .GroupBy(wa => wa.WorkflowActivity) .Select(obj => new { WorkflowActivity = obj.Key, AttributeValues = obj.Select(a => a.AttributeValue) }); if (contextEntity != null) { var personGuid = (( Person )contextEntity).Aliases.Select(a => a.Guid.ToString()).ToList(); var validWorkflowIds = new AttributeValueService(rockContext).Queryable() .Where(av => av.Attribute.Key == "PersonToVisit" && personGuid.Contains(av.Value)).Select(av => av.EntityId); wfTmpqry = wfTmpqry.Where(w => validWorkflowIds.Contains(w.Id)); visitQry = visitQry.Where(w => validWorkflowIds.Contains(w.WorkflowActivity.WorkflowId)); gReport.Columns[10].Visible = true; } var visits = visitQry.ToList(); var workflows = wfTmpqry.Join( attributeValueService.Queryable(), obj => obj.Id, av => av.EntityId.Value, (obj, av) => new { Workflow = obj, AttributeValue = av }) .Where(a => attributeIds.Contains(a.AttributeValue.AttributeId)) .GroupBy(obj => obj.Workflow) .Select(obj => new { Workflow = obj.Key, AttributeValues = obj.Select(a => a.AttributeValue) }) .ToList(); var qry = workflows.AsQueryable().GroupJoin(visits.AsQueryable(), wf => wf.Workflow.Id, wa => wa.WorkflowActivity.WorkflowId, (Workflow, wa) => new { Workflow = Workflow, WorkflowActivities = wa }) .Select(obj => new { Workflow = obj.Workflow.Workflow, AttributeValues = obj.Workflow.AttributeValues, VisitationActivities = obj.WorkflowActivities }).ToList(); if (contextEntity == null) { // Make sure they aren't deceased qry = qry.AsQueryable().Where(w => ! (personAliasService.Get(w.AttributeValues.Where(av => av.AttributeKey == "PersonToVisit").Select(av => av.Value).FirstOrDefault().AsGuid()) != null ? personAliasService.Get(w.AttributeValues.Where(av => av.AttributeKey == "PersonToVisit").Select(av => av.Value).FirstOrDefault().AsGuid()).Person.IsDeceased : false)).ToList(); } var newQry = qry.Select(w => new NursingHomeRow { Id = w.Workflow.Id, Workflow = w.Workflow, NursingHome = new Func <string>(() => { if (w.AttributeValues.Where(av => av.AttributeKey == "NursingHome").Select(av => av.Value).Any()) { return(facilities.Where(h => h.Guid == w.AttributeValues.Where(av => av.AttributeKey == "NursingHome").Select(av => av.Value).FirstOrDefault().AsGuid()).Select(dv => dv.Value).FirstOrDefault()); } return("N/A"); })(), Person = new Func <Person>(() => { AttributeValue personAliasAV = w.AttributeValues.Where(av => av.AttributeKey == "PersonToVisit").FirstOrDefault(); if (personAliasAV != null) { PersonAlias pa = personAliasService.Get(personAliasAV.Value.AsGuid()); return(pa != null ? pa.Person : new Person()); } return(new Person()); })(), Address = new Func <string>(() => { DefinedValueCache dv = facilities.Where(h => h.Guid == w.AttributeValues.Where(av => av.AttributeKey == "NursingHome").Select(av => av.Value).FirstOrDefault().AsGuid()).FirstOrDefault(); if (dv != null) { return(dv.AttributeValues["Qualifier1"].ValueFormatted + " " + dv.AttributeValues["Qualifier2"].ValueFormatted + " " + dv.AttributeValues["Qualifier3"].ValueFormatted + ", " + dv.AttributeValues["Qualifier4"].ValueFormatted); } return(""); })(), PastoralMinister = new Func <string>(() => { DefinedValueCache dv = facilities.Where(h => h.Guid == w.AttributeValues.Where(av => av.AttributeKey == "NursingHome").Select(av => av.Value).FirstOrDefault().AsGuid()).FirstOrDefault(); if (dv != null && (dv.AttributeValues.ContainsKey("PastoralMinister") || dv.AttributeValues.ContainsKey("Qualifier6"))) { return(dv.AttributeValues.ContainsKey("PastoralMinister") ? dv.AttributeValues["PastoralMinister"].ValueFormatted : dv.AttributeValues["Qualifier6"].ValueFormatted); } return(""); })(), Volunteers = new Func <string>(() => { String vList = ""; if (volunteerList.TryGetValue(w.AttributeValues.Where(av => av.AttributeKey == "NursingHome").Select(av => av.Value).FirstOrDefault().AsGuid(), out vList)) { return(vList); } else { return(""); } })(), Room = w.AttributeValues.Where(av => av.AttributeKey == "Room").Select(av => av.ValueFormatted).FirstOrDefault(), AdmitDate = w.AttributeValues.Where(av => av.AttributeKey == "AdmitDate").Select(av => av.ValueAsDateTime).FirstOrDefault(), Description = w.AttributeValues.Where(av => av.AttributeKey == "VisitationRequestDescription").Select(av => av.ValueFormatted).FirstOrDefault(), Visits = w.VisitationActivities.Where(a => a.AttributeValues != null && a.AttributeValues.Where(av => av.AttributeKey == "VisitDate" && !string.IsNullOrWhiteSpace(av.Value)).Any()).Count(), LastVisitor = new Func <string>(() => { var visitor = w.VisitationActivities.Where(a => a.AttributeValues != null && a.AttributeValues.Where(av => av.AttributeKey == "VisitDate" && !string.IsNullOrWhiteSpace(av.Value)).Any()).Select(va => va.AttributeValues.Where(av => av.AttributeKey == "Visitor").LastOrDefault()).LastOrDefault(); if (visitor != null) { return(visitor.ValueFormatted); } return("N/A"); })(), LastVisitDate = w.VisitationActivities.Where(a => a.AttributeValues != null && a.AttributeValues.Where(av => av.AttributeKey == "VisitDate" && !string.IsNullOrWhiteSpace(av.Value)).Any()).Select(va => va.AttributeValues.Where(av => av.AttributeKey == "VisitDate").LastOrDefault()).Select(av => av == null ? "N/A" : av.ValueFormatted).DefaultIfEmpty("N/A").LastOrDefault(), LastVisitNotes = w.VisitationActivities.Where(a => a.AttributeValues != null && a.AttributeValues.Where(av => av.AttributeKey == "VisitDate" && !string.IsNullOrWhiteSpace(av.Value)).Any()).Select(va => va.AttributeValues.Where(av => av.AttributeKey == "VisitNote").LastOrDefault()).Select(av => av == null ? "N/A" : av.ValueFormatted).DefaultIfEmpty("N/A").LastOrDefault(), DischargeDate = w.AttributeValues.Where(av => av.AttributeKey == "DischargeDate").Select(av => av.ValueFormatted).FirstOrDefault(), Status = w.Workflow.Status, Communion = w.AttributeValues.Where(av => av.AttributeKey == "Communion").Select(av => av.ValueFormatted).FirstOrDefault(), Actions = "" }).ToList().AsQueryable().OrderBy(p => p.NursingHome).ThenBy(p => p.Person.FullName); return(newQry); }
public override bool Execute(RockContext rockContext, WorkflowAction action, object entity, out List <string> errorMessages) { errorMessages = new List <string>(); PersonAliasService personAliasService = new PersonAliasService(rockContext); Person person = personAliasService.Get(action.Activity.Workflow.GetAttributeValue("Person").AsGuid()).Person; LocationService locationService = new LocationService(rockContext); Location currentMailingAddress = locationService.Get(action.Activity.Workflow.GetAttributeValue("CurrentMailingAddress").AsGuid()); Location previousMailingAddress = locationService.Get(action.Activity.Workflow.GetAttributeValue("PreviousMailingAddress").AsGuid()); if (previousMailingAddress == null) { previousMailingAddress = new Location(); } Location reference1Address = locationService.Get(action.Activity.Workflow.GetAttributeValue("Reference1Address").AsGuid()); Location reference2Address = locationService.Get(action.Activity.Workflow.GetAttributeValue("Reference2Address").AsGuid()); Location reference3Address = locationService.Get(action.Activity.Workflow.GetAttributeValue("Reference3Address").AsGuid()); Location reference4Address = locationService.Get(action.Activity.Workflow.GetAttributeValue("Reference4Address").AsGuid()); Dictionary <string, string> fields = new Dictionary <string, string>() { { "ministryOfInterest", action.Activity.Workflow.GetAttributeValue("MinistryOfInterest") }, { "intPersonID", person.Id.ToString() }, { "txtLastName", action.Activity.Workflow.GetAttributeValue("LastName") }, { "txtFirstName", action.Activity.Workflow.GetAttributeValue("FirstName") }, { "txtMiddleName", action.Activity.Workflow.GetAttributeValue("MiddleName") }, { "txtMaidenOtherName", action.Activity.Workflow.GetAttributeValue("MaidenOtherNames") }, { "txtParent", action.Activity.Workflow.GetAttributeValue("Parent") }, { "txtParentEmail", action.Activity.Workflow.GetAttributeValue("ParentEmail") }, { "txtParentHomePhone", action.Activity.Workflow.GetAttributeValue("ParentHomePhone") }, { "txtParentCellPhone", action.Activity.Workflow.GetAttributeValue("ParentCellPhone") }, { "txtDateOfBirth", action.Activity.Workflow.GetAttributeValue("DateofBirth").AsDateTime().Value.ToShortDateString() }, //{"txtSSN", action.Activity.Workflow.GetAttributeValue("")}, { "radGender", action.Activity.Workflow.GetAttributeValue("") }, { "radMale", action.Activity.Workflow.GetAttributeValue("Gender") == "Male"?"Yes":"No" }, { "radFemale", action.Activity.Workflow.GetAttributeValue("Gender") == "Female"?"Yes":"No" }, { "txtSCCAttendanceDuration", action.Activity.Workflow.GetAttributeValue("HowLongAttended") }, { "txtSCCMember", person.ConnectionStatusValue.Guid == Rock.SystemGuid.DefinedValue.PERSON_CONNECTION_STATUS_MEMBER.AsGuid()?"Yes":"No" }, { "txtSCCMemberPDFNo", person.ConnectionStatusValue.Guid == Rock.SystemGuid.DefinedValue.PERSON_CONNECTION_STATUS_MEMBER.AsGuid()?"No":"Yes" }, { "txtSCCInvolvement", action.Activity.Workflow.GetAttributeValue("CurrentParticipation") }, { "txtChurch", action.Activity.Workflow.GetAttributeValue("ChurchAtttended") }, { "txtStreet", currentMailingAddress.Street1 }, { "txtCity", currentMailingAddress.City }, { "txtState", currentMailingAddress.State }, { "txtZip", currentMailingAddress.PostalCode }, { "SaveUpToThisPoint", "" }, { "txtPrevStreet", previousMailingAddress.Street1 }, { "txtPrevCity", previousMailingAddress.City }, { "txtPrevState", previousMailingAddress.State }, { "txtPrevZip", previousMailingAddress.PostalCode }, { "radOutOfState", action.Activity.Workflow.GetAttributeValue("OutsideKentuckyIndiana") }, { "radOutOfStatePDFYes", action.Activity.Workflow.GetAttributeValue("OutsideKentuckyIndiana").AsBoolean()?"Yes":"No" }, { "radOutOfStatePDFNo", action.Activity.Workflow.GetAttributeValue("OutsideKentuckyIndiana").AsBoolean()?"No":"Yes" }, { "txtOutOfState_Dates", action.Activity.Workflow.GetAttributeValue("WhenOutsideKentuckyIndiana") }, { "txtOutOfState_State", action.Activity.Workflow.GetAttributeValue("StatesOutsideKentuckyIndiana") }, { "txtEmployer", action.Activity.Workflow.GetAttributeValue("CurrentEmployer") }, { "txtPosition", action.Activity.Workflow.GetAttributeValue("PositionHeld") }, { "txtWorkPhone", action.Activity.Workflow.GetAttributeValue("WorkPhone") }, { "txtHomePhone", action.Activity.Workflow.GetAttributeValue("HomePhone") }, { "txtCellPhone", action.Activity.Workflow.GetAttributeValue("CellPhone") }, //{"txtWorkEmail", action.Activity.Workflow.GetAttributeValue("")}, { "txtEmail", person.Email }, { "txtRef1Name", action.Activity.Workflow.GetAttributeValue("Reference1Name") }, //{"txtRef1Relationship", action.Activity.Workflow.GetAttributeValue("")}, { "radRef1YearsKnow", action.Activity.Workflow.GetAttributeValue("Reference1Relationship") + "/" + action.Activity.Workflow.GetAttributeValue("Reference1YearsKnown") }, { "txtRef1Address", reference1Address.Street1 }, { "txtRef1City", reference1Address.City }, { "txtRef1State", reference1Address.State }, { "txtRef1Zip", reference1Address.PostalCode }, //{"txtRef1PersPhone", action.Activity.Workflow.GetAttributeValue("")}, //{"txtRef1PersPhoneTime", action.Activity.Workflow.GetAttributeValue("")}, { "txtRef1WorkPhone", action.Activity.Workflow.GetAttributeValue("Reference1WorkPhone") }, //{"txtRef1WorkPhoneTime", action.Activity.Workflow.GetAttributeValue("")}, { "txtRef1HomePhone", action.Activity.Workflow.GetAttributeValue("Reference1HomePhone") }, { "txtRef1CellPhone", action.Activity.Workflow.GetAttributeValue("Reference1CellPhone") }, { "txtRef1Email", action.Activity.Workflow.GetAttributeValue("Reference1Email") }, { "txtRef2Name", action.Activity.Workflow.GetAttributeValue("Reference2Name") }, //{"txtRef2Relationship", action.Activity.Workflow.GetAttributeValue("")}, { "radRef2YearsKnow", action.Activity.Workflow.GetAttributeValue("Reference2Relationship") + "/" + action.Activity.Workflow.GetAttributeValue("Reference2YearsKnown") }, { "txtRef2Address", reference2Address.Street1 }, { "txtRef2City", reference2Address.City }, { "txtRef2State", reference2Address.State }, { "txtRef2Zip", reference2Address.PostalCode }, //{"txtRef2PersPhone", action.Activity.Workflow.GetAttributeValue("")}, //{"txtRef2PersPhoneTime", action.Activity.Workflow.GetAttributeValue("")}, { "txtRef2WorkPhone", action.Activity.Workflow.GetAttributeValue("Reference2WorkPhone") }, //{"txtRef2WorkPhoneTime", action.Activity.Workflow.GetAttributeValue("")}, { "txtRef2HomePhone", action.Activity.Workflow.GetAttributeValue("Reference2HomePhone") }, { "txtRef2CellPhone", action.Activity.Workflow.GetAttributeValue("Reference2CellPhone") }, { "txtRef2Email", action.Activity.Workflow.GetAttributeValue("Reference2Email") }, { "txtRef3Name", action.Activity.Workflow.GetAttributeValue("Reference3Name") }, //{"txtRef3Relationship", action.Activity.Workflow.GetAttributeValue("")}, { "radRef3YearsKnow", action.Activity.Workflow.GetAttributeValue("Reference3Relationship") + "/" + action.Activity.Workflow.GetAttributeValue("Reference3YearsKnown") }, { "txtRef3Address", reference3Address.Street1 }, { "txtRef3City", reference3Address.City }, { "txtRef3State", reference3Address.State }, { "txtRef3Zip", reference3Address.PostalCode }, //{"txtRef3PersPhone", action.Activity.Workflow.GetAttributeValue("")}, //{"txtRef3PersPhoneTime", action.Activity.Workflow.GetAttributeValue("")}, { "txtRef3WorkPhone", action.Activity.Workflow.GetAttributeValue("Reference3WorkPhone") }, //{"txtRef3WorkPhoneTime", action.Activity.Workflow.GetAttributeValue("")}, { "txtRef3HomePhone", action.Activity.Workflow.GetAttributeValue("Reference3HomePhone") }, { "txtRef3CellPhone", action.Activity.Workflow.GetAttributeValue("Reference3CellPhone") }, { "txtRef3Email", action.Activity.Workflow.GetAttributeValue("Reference3Email") }, { "txtRef4Name", action.Activity.Workflow.GetAttributeValue("Reference4Name") }, //{"txtRef4Relationship", action.Activity.Workflow.GetAttributeValue("")}, { "radRef4YearsKnow", action.Activity.Workflow.GetAttributeValue("Reference4Relationship") + "/" + action.Activity.Workflow.GetAttributeValue("Reference4YearsKnown") }, { "txtRef4Address", reference4Address?.Street1 }, { "txtRef4City", reference4Address?.City }, { "txtRef4State", reference4Address?.State }, { "txtRef4Zip", reference4Address?.PostalCode }, //{"txtRef4PersPhone", action.Activity.Workflow.GetAttributeValue("")}, //{"txtRef4PersPhoneTime", action.Activity.Workflow.GetAttributeValue("")}, { "txtRef4WorkPhone", action.Activity.Workflow.GetAttributeValue("Reference4WorkPhone") }, //{"txtRef4WorkPhoneTime", action.Activity.Workflow.GetAttributeValue("")}, { "txtRef4HomePhone", action.Activity.Workflow.GetAttributeValue("Reference4HomePhone") }, { "txtRef4CellPhone", action.Activity.Workflow.GetAttributeValue("Reference4CellPhone") }, { "txtRef4Email", action.Activity.Workflow.GetAttributeValue("Reference4Email") }, //{"txtPhysLimitations", action.Activity.Workflow.GetAttributeValue("")}, { "txtPhysLimitations", action.Activity.Workflow.GetAttributeValue("PhysicalLimitationsExplanation") }, { "txtPhysLimitationsPDF", action.Activity.Workflow.GetAttributeValue("PhysicalLimitationsExplanation") }, { "radPhysLimitationsPDFYes", action.Activity.Workflow.GetAttributeValue("PhysicalLimitations").AsBoolean()?"Yes":"No" }, { "radPhysLimitationsPDFNo", action.Activity.Workflow.GetAttributeValue("PhysicalLimitations").AsBoolean()?"No":"Yes" }, { "radCrimePersons", action.Activity.Workflow.GetAttributeValue("Crime").AsBoolean()?"Yes":"No" }, { "radCrimePersonsPDFNo", action.Activity.Workflow.GetAttributeValue("Crime").AsBoolean()?"No":"Yes" }, //{"radCrimeProperty", action.Activity.Workflow.GetAttributeValue("")}, { "radThreatToMinors", action.Activity.Workflow.GetAttributeValue("Threat").AsBoolean()?"Yes":"No" }, { "radThreatToMinorsPDFNo", action.Activity.Workflow.GetAttributeValue("Threat").AsBoolean()?"No":"Yes" }, { "radCrimeCounseled", action.Activity.Workflow.GetAttributeValue("CrimeCounsel").AsBoolean()?"Yes":"No" }, { "radCrimeCounseledPDFYes", action.Activity.Workflow.GetAttributeValue("CrimeCounsel").AsBoolean()?"Yes":"No" }, { "radCrimeCounseledPDFNo", action.Activity.Workflow.GetAttributeValue("CrimeCounsel").AsBoolean()?"No":"Yes" }, { "radNeedsStaffContact", action.Activity.Workflow.GetAttributeValue("Contact").AsBoolean()?"Yes":"No" }, { "radNeedsStaffContactPDFNo", action.Activity.Workflow.GetAttributeValue("Contact").AsBoolean()?"No":"Yes" }, { "personDetailPage", GlobalAttributesCache.Value("InternalApplicationRoot") + "/Person/" + person.Id }, { "txtAppSigned", "{{t:s;r:y;o:\"Applicant\";}}" }, { "txtAppDated", "{{t:d;r:y;o:\"Applicant\";l:\"Date\";dd:\"" + DateTime.Now.ToShortDateString() + "\";}}" }, { "txtAppPrintedName", person.FullNameFormal }, { "txtSOFSigned", "{{t:s;r:n;o:\"Applicant\";}}" }, { "txtSOFDated", "{{t:d;r:n;o:\"Applicant\";l:\"Date\";dd:\"" + DateTime.Now.ToShortDateString() + "\";}}" }, { "txtSOFPrintedName", person.FullNameFormal }, { "txtParentSignature", "{{t:s;r:y;o:\"Parent\";}}" }, { "txtDate1", "{{t:d;r:y;o:\"Parent\";l:\"Date\";dd:\"" + DateTime.Now.ToShortDateString() + "\";}}" }, { "radReadSOFYes", action.Activity.Workflow.GetAttributeValue("ReadStatementOfFaith").AsBoolean()?"Yes":"No" }, { "radReadSOFNo", action.Activity.Workflow.GetAttributeValue("ReadStatementOfFaith").AsBoolean()?"No":"Yes" }, { "radAgreeSOFYes", action.Activity.Workflow.GetAttributeValue("AgreeStatementOfFaith").AsBoolean()?"Yes":"No" }, { "radAgreeSOFNo", action.Activity.Workflow.GetAttributeValue("AgreeStatementOfFaith").AsBoolean()?"No":"Yes" }, { "txtSOFCommentsAmendments", String.IsNullOrEmpty(action.Activity.Workflow.GetAttributeValue("CommentsStatementOfFaith"))?" ":action.Activity.Workflow.GetAttributeValue("CommentsStatementOfFaith") }, }; BinaryFileService binaryFileService = new BinaryFileService(rockContext); BinaryFile PDF = null; var isMinorApplicant = GetAttributeValue(action, "IsMinorApplication", true).AsBoolean(); if (isMinorApplicant) { PDF = binaryFileService.Get(GetActionAttributeValue(action, "MinorVolunteerApplicationPDF").AsGuid()); } else { PDF = binaryFileService.Get(GetActionAttributeValue(action, "AdultVolunteerApplicationPDF").AsGuid()); } var pdfBytes = PDF.ContentStream.ReadBytesToEnd(); using (MemoryStream ms = new MemoryStream()) { PdfReader pdfReader = new PdfReader(pdfBytes); PdfStamper pdfStamper = new PdfStamper(pdfReader, ms); AcroFields pdfFormFields = pdfStamper.AcroFields; foreach (var field in fields) { if (pdfFormFields.Fields.ContainsKey(field.Key)) { pdfFormFields.SetField(field.Key, field.Value); } } // flatten the form to remove editting options, set it to false // to leave the form open to subsequent manual edits pdfStamper.FormFlattening = true; // close the pdf pdfStamper.Close(); //pdfReader.Close(); pdfStamper.Dispose(); pdfStamper = null; BinaryFile renderedPDF = new BinaryFile(); renderedPDF.CopyPropertiesFrom(PDF); renderedPDF.Guid = Guid.NewGuid(); renderedPDF.FileName = "VolunteerApplication_" + person.FirstName + person.LastName + ".pdf"; renderedPDF.BinaryFileTypeId = new BinaryFileTypeService(rockContext).Get(new Guid(BACKGROUND_CHECK_BINARY_FILE_TYPE)).Id; BinaryFileData pdfData = new BinaryFileData(); pdfData.Content = ms.ToArray(); renderedPDF.DatabaseData = pdfData; binaryFileService.Add(renderedPDF); rockContext.SaveChanges(); action.Activity.Workflow.SetAttributeValue("PDF", renderedPDF.Guid); } return(true); }
private void LoadUserFilterSettings() { foreach (ListItem item in cbListStatus.Items) { bool IsSelected = false; string KeyName = string.Format("{0}_Status_{1}", PersonSettingKeyPrefix, item.Value); bool.TryParse(GetUserPreference(KeyName), out IsSelected); item.Selected = IsSelected; } foreach (ListItem item in cbListType.Items) { bool IsSelected = false; string KeyName = string.Format("{0}_Type_{1}", PersonSettingKeyPrefix, item.Value); bool.TryParse(GetUserPreference(KeyName), out IsSelected); item.Selected = IsSelected; } DateTime OrderedOnStart; DateTime.TryParse(GetUserPreference(string.Format("{0}_OrderedOnStart", PersonSettingKeyPrefix)), out OrderedOnStart); if (OrderedOnStart > DateTime.MinValue) { txtOrderDate.LowerValue = OrderedOnStart; } DateTime OrderedOnEnd; DateTime.TryParse(GetUserPreference(string.Format("{0}_OrderedOnEnd", PersonSettingKeyPrefix)), out OrderedOnEnd); if (OrderedOnEnd > DateTime.MinValue) { txtOrderDate.UpperValue = OrderedOnEnd; } int OrderedByPersonID = 0; int.TryParse(GetUserPreference(string.Format("{0}_OrderedBy", PersonSettingKeyPrefix)), out OrderedByPersonID); int PONumber = 0; int.TryParse(GetUserPreference(string.Format("{0}_PONumber", PersonSettingKeyPrefix)), out PONumber); if (PONumber > 0) { txtPONumber.Text = PONumber.ToString(); } int VendorID = 0; int.TryParse(GetUserPreference(string.Format("{0}_VendorID", PersonSettingKeyPrefix)), out VendorID); if (VendorID > 0 && ddlVendor.Items.FindByValue(VendorID.ToString()) != null) { ddlVendor.SelectedValue = VendorID.ToString(); } DateTime PaymentStart; DateTime.TryParse(GetUserPreference(string.Format("{0}_PaymentStart", PersonSettingKeyPrefix)), out PaymentStart); if (PaymentStart > DateTime.MinValue) { drpPaymentDate.LowerValue = PaymentStart; } DateTime PaymentEnd; DateTime.TryParse(GetUserPreference(string.Format("{0}_PaymentEnd", PersonSettingKeyPrefix)), out PaymentEnd); if (PaymentEnd > DateTime.MinValue) { drpPaymentDate.UpperValue = PaymentEnd; } int PaymentMethodID = 0; int.TryParse(GetUserPreference(string.Format("{0}_PaymentMethodID", PersonSettingKeyPrefix)), out PaymentMethodID); if (PaymentMethodID > 0 && ddlPaymentMethod.Items.FindByValue(PaymentMethodID.ToString()) != null) { ddlPaymentMethod.SelectedValue = PaymentMethodID.ToString(); } if (OrderedByPersonID > 0) { PersonAliasService personAliasService = new PersonAliasService(new Rock.Data.RockContext()); Person OrderedByPerson = personAliasService.Get(OrderedByPersonID).Person; if (OrderedByPerson.PrimaryAliasId > 0) { ucStaffPicker.StaffPerson = OrderedByPerson.PrimaryAlias; } } bool ShowInactive = false; bool.TryParse(GetUserPreference(string.Format("{0}_ShowInactive", PersonSettingKeyPrefix)), out ShowInactive); chkShowInactive.Checked = ShowInactive; tbGLAccount.Text = GetUserPreference(string.Format("{0}_GLAccount", PersonSettingKeyPrefix)); }