本文整理汇总了C#中Rock.Model.AttributeService类的典型用法代码示例。如果您正苦于以下问题:C# AttributeService类的具体用法?C# AttributeService怎么用?C# AttributeService使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
AttributeService类属于Rock.Model命名空间,在下文中一共展示了AttributeService类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Get
public IHttpActionResult Get(int seriesId)
{
var rockContext = new RockContext();
var contentItemService = new ContentChannelService(rockContext);
var d = new DotLiquid.Context();
ContentChannel contentItem = null;
var attrService = new AttributeService(rockContext);
var dailyItems = new List<MessageArchiveItem>();
var ids = rockContext.Database.SqlQuery<int>("exec GetMessageArchivesBySeriesId @seriesId", new SqlParameter("seriesId", seriesId)).ToList();
contentItem = contentItemService.Get(11);
var items = contentItem.Items.Where(a => ids.Contains(a.Id)).ToList();
foreach (var item in items)
{
item.LoadAttributes(rockContext);
var link = GetVimeoLink(item.GetAttributeValue("VideoId"));
var newItem = new MessageArchiveItem();
newItem.Id = item.Id;
// newItem.Content = item.Content;
newItem.Content = DotLiquid.StandardFilters.StripHtml(item.Content).Replace("\n\n", "\r\n\r\n");
newItem.Date = DateTime.Parse(item.GetAttributeValue("Date")).ToShortDateString();
newItem.Speaker = item.GetAttributeValue("Speaker");
newItem.SpeakerTitle = item.GetAttributeValue("SpeakerTitle");
newItem.Title = item.Title;
newItem.VimeoLink = link;
var notesAttr = item.Attributes["MessageNotes"];
var binaryFile = new BinaryFileService(new RockContext()).Get(notesAttr.Id);
if (binaryFile != null)
newItem.Notes = binaryFile.Url;
var talkAttr = item.Attributes["TalkItOver"];
binaryFile = new BinaryFileService(new RockContext()).Get(talkAttr.Id);
if (binaryFile != null)
newItem.TalkItOver = binaryFile.Url;
dailyItems.Add(newItem);
}
return Ok(dailyItems.AsQueryable());
}
示例2: MapActivityMinistry
/// <summary>
/// Maps the activity ministry.
/// </summary>
/// <param name="tableData">The table data.</param>
/// <returns></returns>
private void MapActivityMinistry( IQueryable<Row> tableData )
{
int groupEntityTypeId = EntityTypeCache.Read( "Rock.Model.Group" ).Id;
var attributeService = new AttributeService();
// Add an Attribute for the unique F1 Ministry Id
var ministryAttributeId = attributeService.Queryable().Where( a => a.EntityTypeId == groupEntityTypeId
&& a.Key == "F1MinistryId" ).Select( a => a.Id ).FirstOrDefault();
if ( ministryAttributeId == 0 )
{
var newMinistryAttribute = new Rock.Model.Attribute();
newMinistryAttribute.Key = "F1MinistryId";
newMinistryAttribute.Name = "F1 Ministry Id";
newMinistryAttribute.FieldTypeId = IntegerFieldTypeId;
newMinistryAttribute.EntityTypeId = groupEntityTypeId;
newMinistryAttribute.EntityTypeQualifierValue = string.Empty;
newMinistryAttribute.EntityTypeQualifierColumn = string.Empty;
newMinistryAttribute.Description = "The FellowshipOne identifier for the ministry that was imported";
newMinistryAttribute.DefaultValue = string.Empty;
newMinistryAttribute.IsMultiValue = false;
newMinistryAttribute.IsRequired = false;
newMinistryAttribute.Order = 0;
attributeService.Add( newMinistryAttribute, ImportPersonAlias );
attributeService.Save( newMinistryAttribute, ImportPersonAlias );
ministryAttributeId = newMinistryAttribute.Id;
}
// Get previously imported Ministries
var importedMinistries = new AttributeValueService().GetByAttributeId( ministryAttributeId )
.Select( av => new { RLCId = av.Value.AsType<int?>(), LocationId = av.EntityId } )
.ToDictionary( t => t.RLCId, t => t.LocationId );
foreach ( var row in tableData )
{
int? ministryId = row["Ministry_ID"] as int?;
if ( ministryId != null && !importedMinistries.ContainsKey( ministryId ) )
{
// Activity_ID
// Ministry_Name
// Activity_Name
// Ministry_Active
// Activity_Active
}
}
}
示例3: GetUserPreference
/// <summary>
/// Returns a <see cref="Rock.Model.Person"/> user preference value by preference setting's key.
/// </summary>
/// <param name="person">The <see cref="Rock.Model.Person"/> to retrieve the preference value for.</param>
/// <param name="key">A <see cref="System.String"/> representing the key name of the preference setting.</param>
/// <returns>A list of <see cref="System.String"/> containing the values associated with the user's preference setting.</returns>
public static List<string> GetUserPreference( Person person, string key )
{
int? PersonEntityTypeId = Rock.Web.Cache.EntityTypeCache.Read( Person.USER_VALUE_ENTITY ).Id;
var rockContext = new Rock.Data.RockContext();
var attributeService = new Model.AttributeService( rockContext );
var attribute = attributeService.Get( PersonEntityTypeId, string.Empty, string.Empty, key );
if (attribute != null)
{
var attributeValueService = new Model.AttributeValueService( rockContext );
var attributeValues = attributeValueService.GetByAttributeIdAndEntityId(attribute.Id, person.Id);
if (attributeValues != null && attributeValues.Count() > 0)
return attributeValues.Select( v => v.Value).ToList();
}
return null;
}
示例4: Test
public List<int> Test()
{
var rockContext = new RockContext();
var contentItemService = new ContentChannelService(rockContext);
var d = new DotLiquid.Context();
ContentChannel contentItem = null;
var attrService = new AttributeService(rockContext);
var dailyItems = new List<int>();
contentItem = contentItemService.Get(20);
var items = contentItem.Items.Where(a => a.StartDateTime < DateTime.Now).OrderByDescending(i=>i.Id);
foreach (var i in contentItem.Items)
{
dailyItems.Add(i.Id);
}
return dailyItems;
}
示例5: GetDailyItem
public TheDailyItem GetDailyItem(int id)
{
var rockContext = new RockContext();
var contentItemService = new ContentChannelItemService(rockContext);
ContentChannelItem i = null;
var attrService = new AttributeService(rockContext);
var dailyItem = new TheDailyItem();
i = contentItemService.Get(id);
if (i != null)
{
i.LoadAttributes();
i.Content = DotLiquid.StandardFilters.StripHtml(i.Content).Replace("\n\n", "\r\n\r\n");
var attributes = i.Attributes;
var pdfAttr = i.Attributes["PDF"];
var binaryFile = new BinaryFileService(new RockContext()).Get(pdfAttr.Id);
var pdfUrl = binaryFile.Url;
var scriptureAttr = i.Attributes["ScriptureCards"];
binaryFile = new BinaryFileService(new RockContext()).Get(scriptureAttr.Id);
var scriptureUrl = binaryFile.Url;
dailyItem = (new TheDailyItem { Id = i.Id, Title = i.Title, Content = i.Content, DailyPDF = pdfUrl, ScriptiureCards = scriptureUrl });
}
return dailyItem;
}
示例6: ShowEditDetails
/// <summary>
/// Shows the edit details.
/// </summary>
/// <param name="contentChannel">Type of the content.</param>
protected void ShowEditDetails( ContentChannel contentChannel )
{
if ( contentChannel != null )
{
hfId.Value = contentChannel.Id.ToString();
string title = contentChannel.Id > 0 ?
ActionTitle.Edit( ContentChannel.FriendlyTypeName ) :
ActionTitle.Add( ContentChannel.FriendlyTypeName );
SetHeadingInfo( contentChannel, title );
SetEditMode( true );
LoadDropdowns();
tbName.Text = contentChannel.Name;
tbDescription.Text = contentChannel.Description;
ddlChannelType.SetValue( contentChannel.ContentChannelTypeId );
ddlContentControlType.SetValue( contentChannel.ContentControlType.ConvertToInt().ToString() );
tbRootImageDirectory.Text = contentChannel.RootImageDirectory;
tbRootImageDirectory.Visible = contentChannel.ContentControlType == ContentControlType.HtmlEditor;
tbIconCssClass.Text = contentChannel.IconCssClass;
cbRequireApproval.Checked = contentChannel.RequiresApproval;
cbItemsManuallyOrdered.Checked = contentChannel.ItemsManuallyOrdered;
cbChildItemsManuallyOrdered.Checked = contentChannel.ChildItemsManuallyOrdered;
cbEnableRss.Checked = contentChannel.EnableRss;
divRss.Attributes["style"] = cbEnableRss.Checked ? "display:block" : "display:none";
tbChannelUrl.Text = contentChannel.ChannelUrl;
tbItemUrl.Text = contentChannel.ItemUrl;
nbTimetoLive.Text = ( contentChannel.TimeToLive ?? 0 ).ToString();
ChildContentChannelsList = new List<int>();
contentChannel.ChildContentChannels.ToList().ForEach( a => ChildContentChannelsList.Add( a.Id ) );
BindChildContentChannelsGrid();
AddAttributeControls( contentChannel );
// load attribute data
ItemAttributesState = new List<Attribute>();
AttributeService attributeService = new AttributeService( new RockContext() );
string qualifierValue = contentChannel.Id.ToString();
attributeService.GetByEntityTypeId( new ContentChannelItem().TypeId ).AsQueryable()
.Where( a =>
a.EntityTypeQualifierColumn.Equals( "ContentChannelId", StringComparison.OrdinalIgnoreCase ) &&
a.EntityTypeQualifierValue.Equals( qualifierValue ) )
.ToList()
.ForEach( a => ItemAttributesState.Add( a ) );
// Set order
int newOrder = 0;
ItemAttributesState.ForEach( a => a.Order = newOrder++ );
BindItemAttributesGrid();
}
}
示例7: ShowEditDetails
/// <summary>
/// Shows the edit details.
/// </summary>
/// <param name="location">The location.</param>
private void ShowEditDetails( Location location )
{
if ( location.Id == 0 )
{
lReadOnlyTitle.Text = ActionTitle.Add( Location.FriendlyTypeName ).FormatAsHtmlTitle();
hlInactive.Visible = false;
}
else
{
if ( string.IsNullOrWhiteSpace( location.Name ) )
{
lReadOnlyTitle.Text = location.ToString().FormatAsHtmlTitle();
}
else
{
lReadOnlyTitle.Text = location.Name.FormatAsHtmlTitle();
}
}
SetEditMode( true );
imgImage.BinaryFileId = location.ImageId;
imgImage.NoPictureUrl = System.Web.VirtualPathUtility.ToAbsolute( "~/Assets/Images/no-picture.svg?" );
tbName.Text = location.Name;
cbIsActive.Checked = location.IsActive;
acAddress.SetValues( location );
ddlPrinter.SetValue( location.PrinterDeviceId );
geopPoint.SetValue( location.GeoPoint );
geopFence.SetValue( location.GeoFence );
cbGeoPointLocked.Checked = location.IsGeoPointLocked ?? false;
Guid mapStyleValueGuid = GetAttributeValue( "MapStyle" ).AsGuid();
geopPoint.MapStyleValueGuid = mapStyleValueGuid;
geopFence.MapStyleValueGuid = mapStyleValueGuid;
var rockContext = new RockContext();
var locationService = new LocationService( rockContext );
var attributeService = new AttributeService( rockContext );
ddlLocationType.BindToDefinedType( DefinedTypeCache.Read( Rock.SystemGuid.DefinedType.LOCATION_TYPE.AsGuid() ), true );
gpParentLocation.Location = location.ParentLocation ?? locationService.Get( location.ParentLocationId ?? 0 );
// LocationType depends on Selected ParentLocation
if ( location.Id == 0 && ddlLocationType.Items.Count > 1 )
{
// if this is a new location
ddlLocationType.SelectedIndex = 0;
}
else
{
ddlLocationType.SetValue( location.LocationTypeValueId );
}
location.LoadAttributes( rockContext );
BuildAttributeEdits( location, true );
}
示例8: ShowEditDetails
/// <summary>
/// Shows the edit details.
/// </summary>
/// <param name="workflowType">Type of the workflow.</param>
private void ShowEditDetails( WorkflowType workflowType, RockContext rockContext )
{
if ( workflowType.Id == 0 )
{
lReadOnlyTitle.Text = ActionTitle.Add( WorkflowType.FriendlyTypeName ).FormatAsHtmlTitle();
hlInactive.Visible = false;
}
SetEditMode( true );
LoadDropDowns();
tbName.Text = workflowType.Name;
tbDescription.Text = workflowType.Description;
cbIsActive.Checked = workflowType.IsActive ?? false;
cpCategory.SetValue( workflowType.CategoryId );
tbWorkTerm.Text = workflowType.WorkTerm;
tbProcessingInterval.Text = workflowType.ProcessingIntervalSeconds != null ? workflowType.ProcessingIntervalSeconds.ToString() : string.Empty;
cbIsPersisted.Checked = workflowType.IsPersisted;
ddlLoggingLevel.SetValue( (int)workflowType.LoggingLevel );
var attributeService = new AttributeService( rockContext );
AttributesState = new ViewStateList<Attribute>();
AttributesState.AddAll( attributeService.GetByEntityTypeId( new Workflow().TypeId ).AsQueryable()
.Where( a =>
a.EntityTypeQualifierColumn.Equals( "WorkflowTypeId", StringComparison.OrdinalIgnoreCase ) &&
a.EntityTypeQualifierValue.Equals( workflowType.Id.ToString() ) )
.OrderBy( a => a.Order )
.ThenBy( a => a.Name )
.ToList() );
BindAttributesGrid();
phActivities.Controls.Clear();
foreach ( WorkflowActivityType workflowActivityType in workflowType.ActivityTypes.OrderBy( a => a.Order ) )
{
CreateWorkflowActivityTypeEditorControls( workflowActivityType );
}
RefreshActivityLists();
}
示例9: AddOrUpdateGroupMemberAttributes
/// <summary>
/// Adds or update group member's attributes using any page parameters that are attributes of the group.
/// </summary>
/// <param name="person">The person.</param>
/// <param name="group">The group.</param>
/// <param name="rockContext">The rock context.</param>
private void AddOrUpdateGroupMemberAttributes( Person person, Group group, RockContext rockContext )
{
var groupMember = group.Members.Where( m => m.PersonId == person.Id ).FirstOrDefault();
AttributeService attributeService = new AttributeService( rockContext );
// Load all the group member attributes for comparison below.
var attributes = attributeService.GetGroupMemberAttributesCombined( group.Id, group.GroupTypeId );
// In order to add attributes to the person, you have to first load them all
groupMember.LoadAttributes( rockContext );
foreach ( var entry in PageParameters() )
{
// skip the parameter if the group's group type doesn't have that one
var attribute = attributes.Where( a => a.Key.Equals( entry.Key, StringComparison.OrdinalIgnoreCase ) ).FirstOrDefault();
if ( attribute == null )
{
continue;
}
//attribute.SetAttributeValue
groupMember.SetAttributeValue( entry.Key, (string) entry.Value );
}
groupMember.SaveAttributeValues( rockContext );
}
示例10: btnSave_Click
/// <summary>
/// Handles the Click event of the btnSave control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
protected void btnSave_Click( object sender, EventArgs e )
{
Device Device = null;
var rockContext = new RockContext();
var deviceService = new DeviceService( rockContext );
var attributeService = new AttributeService( rockContext );
var locationService = new LocationService( rockContext );
int DeviceId = int.Parse( hfDeviceId.Value );
if ( DeviceId != 0 )
{
Device = deviceService.Get( DeviceId );
}
if ( Device == null )
{
// Check for existing
var existingDevice = deviceService.Queryable()
.Where( d => d.Name == tbName.Text )
.FirstOrDefault();
if ( existingDevice != null )
{
nbDuplicateDevice.Text = string.Format( "A device already exists with the name '{0}'. Please use a different device name.", existingDevice.Name );
nbDuplicateDevice.Visible = true;
}
else
{
Device = new Device();
deviceService.Add( Device );
}
}
if ( Device != null )
{
Device.Name = tbName.Text;
Device.Description = tbDescription.Text;
Device.IPAddress = tbIpAddress.Text;
Device.DeviceTypeValueId = ddlDeviceType.SelectedValueAsInt().Value;
Device.PrintToOverride = (PrintTo)System.Enum.Parse( typeof( PrintTo ), ddlPrintTo.SelectedValue );
Device.PrinterDeviceId = ddlPrinter.SelectedValueAsInt();
Device.PrintFrom = (PrintFrom)System.Enum.Parse( typeof( PrintFrom ), ddlPrintFrom.SelectedValue );
if ( Device.Location == null )
{
Device.Location = new Location();
}
Device.Location.GeoPoint = geopPoint.SelectedValue;
Device.Location.GeoFence = geopFence.SelectedValue;
if ( !Device.IsValid || !Page.IsValid )
{
// Controls will render the error messages
return;
}
// Remove any deleted locations
foreach ( var location in Device.Locations
.Where( l =>
!Locations.Keys.Contains( l.Id ) )
.ToList() )
{
Device.Locations.Remove( location );
}
// Add any new locations
var existingLocationIDs = Device.Locations.Select( l => l.Id ).ToList();
foreach ( var location in locationService.Queryable()
.Where( l =>
Locations.Keys.Contains( l.Id ) &&
!existingLocationIDs.Contains( l.Id ) ) )
{
Device.Locations.Add( location );
}
rockContext.SaveChanges();
Rock.CheckIn.KioskDevice.Flush( Device.Id );
NavigateToParentPage();
}
}
示例11: btnSave_Click
//.........这里部分代码省略.........
{
foreach( var formField in fieldList
.Where( a =>
a.FieldSource == RegistrationFieldSource.GroupMemberAttribute &&
a.AttributeId.HasValue &&
!validGroupMemberAttributeIds.Contains( a.AttributeId.Value ) )
.ToList() )
{
fieldList.Remove( formField );
}
}
// Perform Validation
var validationErrors = new List<string>();
if ( ( ( RegistrationTemplate.SetCostOnInstance ?? false ) || RegistrationTemplate.Cost > 0 || FeeState.Any() ) && !RegistrationTemplate.FinancialGatewayId.HasValue )
{
validationErrors.Add( "A Financial Gateway is required when the registration has a cost or additional fees or is configured to allow instances to set a cost." );
}
if ( validationErrors.Any() )
{
nbValidationError.Visible = true;
nbValidationError.Text = "<ul class='list-unstyled'><li>" + validationErrors.AsDelimited( "</li><li>" ) + "</li></ul>";
}
else
{
// Save the entity field changes to registration template
if ( RegistrationTemplate.Id.Equals( 0 ) )
{
service.Add( RegistrationTemplate );
}
rockContext.SaveChanges();
var attributeService = new AttributeService( rockContext );
var registrationTemplateFormService = new RegistrationTemplateFormService( rockContext );
var registrationTemplateFormFieldService = new RegistrationTemplateFormFieldService( rockContext );
var registrationTemplateDiscountService = new RegistrationTemplateDiscountService( rockContext );
var registrationTemplateFeeService = new RegistrationTemplateFeeService( rockContext );
var registrationRegistrantFeeService = new RegistrationRegistrantFeeService( rockContext );
var groupService = new GroupService( rockContext );
// delete forms that aren't assigned in the UI anymore
var formUiGuids = FormState.Select( f => f.Guid ).ToList();
foreach ( var form in registrationTemplateFormService
.Queryable()
.Where( f =>
f.RegistrationTemplateId == RegistrationTemplate.Id &&
!formUiGuids.Contains( f.Guid ) ) )
{
foreach( var formField in form.Fields.ToList() )
{
form.Fields.Remove( formField );
registrationTemplateFormFieldService.Delete( formField );
}
registrationTemplateFormService.Delete( form );
}
// delete fields that aren't assigned in the UI anymore
var fieldUiGuids = FormFieldsState.SelectMany( a => a.Value).Select( f => f.Guid ).ToList();
foreach ( var formField in registrationTemplateFormFieldService
.Queryable()
.Where( a =>
formUiGuids.Contains( a.RegistrationTemplateForm.Guid ) &&
!fieldUiGuids.Contains( a.Guid ) ) )
{
示例12: btnSave_Click
/// <summary>
/// Handles the Click event of the btnSave control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
protected void btnSave_Click( object sender, EventArgs e )
{
Location location = null;
var rockContext = new RockContext();
LocationService locationService = new LocationService( rockContext );
AttributeService attributeService = new AttributeService( rockContext );
AttributeQualifierService attributeQualifierService = new AttributeQualifierService( rockContext );
int locationId = int.Parse( hfLocationId.Value );
if ( locationId != 0 )
{
location = locationService.Get( locationId );
FlushCampus( locationId );
}
if ( location == null )
{
location = new Location();
location.Name = string.Empty;
}
string previousName = location.Name;
int? orphanedImageId = null;
if ( location.ImageId != imgImage.BinaryFileId )
{
orphanedImageId = location.ImageId;
location.ImageId = imgImage.BinaryFileId;
}
location.Name = tbName.Text;
location.IsActive = cbIsActive.Checked;
location.LocationTypeValueId = ddlLocationType.SelectedValueAsId();
if ( gpParentLocation != null && gpParentLocation.Location != null )
{
location.ParentLocationId = gpParentLocation.Location.Id;
}
else
{
location.ParentLocationId = null;
}
location.PrinterDeviceId = ddlPrinter.SelectedValueAsInt();
acAddress.GetValues(location);
location.GeoPoint = geopPoint.SelectedValue;
if ( geopPoint.SelectedValue != null )
{
location.IsGeoPointLocked = true;
}
location.GeoFence = geopFence.SelectedValue;
location.IsGeoPointLocked = cbGeoPointLocked.Checked;
location.SoftRoomThreshold = nbSoftThreshold.Text.AsIntegerOrNull();
location.FirmRoomThreshold = nbFirmThreshold.Text.AsIntegerOrNull();
location.LoadAttributes( rockContext );
Rock.Attribute.Helper.GetEditValues( phAttributeEdits, location );
if ( !Page.IsValid )
{
return;
}
// if the location IsValid is false, and the UI controls didn't report any errors, it is probably because the custom rules of location didn't pass.
// So, make sure a message is displayed in the validation summary
cvLocation.IsValid = location.IsValid;
if ( !cvLocation.IsValid )
{
cvLocation.ErrorMessage = location.ValidationResults.Select( a => a.ErrorMessage ).ToList().AsDelimited( "<br />" );
return;
}
rockContext.WrapTransaction( () =>
{
if ( location.Id.Equals( 0 ) )
{
locationService.Add( location );
}
rockContext.SaveChanges();
if (orphanedImageId.HasValue)
{
BinaryFileService binaryFileService = new BinaryFileService( rockContext );
var binaryFile = binaryFileService.Get( orphanedImageId.Value );
if ( binaryFile != null )
{
// marked the old images as IsTemporary so they will get cleaned up later
binaryFile.IsTemporary = true;
rockContext.SaveChanges();
//.........这里部分代码省略.........
示例13: btnSave_Click
/// <summary>
/// Handles the Click event of the btnSave control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
protected void btnSave_Click( object sender, EventArgs e )
{
BinaryFile binaryFile;
var rockContext = new RockContext();
BinaryFileService binaryFileService = new BinaryFileService( rockContext );
AttributeService attributeService = new AttributeService( rockContext );
int? prevBinaryFileTypeId = null;
int binaryFileId = int.Parse( hfBinaryFileId.Value );
if ( binaryFileId == 0 )
{
binaryFile = new BinaryFile();
binaryFileService.Add( binaryFile );
}
else
{
binaryFile = binaryFileService.Get( binaryFileId );
prevBinaryFileTypeId = binaryFile != null ? binaryFile.BinaryFileTypeId : (int?)null;
}
// if a new file was uploaded, copy the uploaded file to this binaryFile (uploaded files are always new temporary binaryFiles)
if ( fsFile.BinaryFileId != binaryFile.Id)
{
var uploadedBinaryFile = binaryFileService.Get(fsFile.BinaryFileId ?? 0);
if (uploadedBinaryFile != null)
{
binaryFile.BinaryFileTypeId = uploadedBinaryFile.BinaryFileTypeId;
binaryFile.ContentStream = uploadedBinaryFile.ContentStream;
}
}
binaryFile.IsTemporary = false;
binaryFile.FileName = tbName.Text;
binaryFile.Description = tbDescription.Text;
binaryFile.MimeType = tbMimeType.Text;
binaryFile.BinaryFileTypeId = ddlBinaryFileType.SelectedValueAsInt();
binaryFile.LoadAttributes( rockContext );
Rock.Attribute.Helper.GetEditValues( phAttributes, binaryFile );
if ( !Page.IsValid )
{
return;
}
if ( !binaryFile.IsValid )
{
// Controls will render the error messages
return;
}
rockContext.WrapTransaction( () =>
{
foreach ( var id in OrphanedBinaryFileIdList )
{
var tempBinaryFile = binaryFileService.Get( id );
if ( tempBinaryFile != null && tempBinaryFile.IsTemporary )
{
binaryFileService.Delete( tempBinaryFile );
}
}
rockContext.SaveChanges();
binaryFile.SaveAttributeValues( rockContext );
} );
Rock.CheckIn.KioskLabel.Flush( binaryFile.Guid );
if ( !prevBinaryFileTypeId.Equals( binaryFile.BinaryFileTypeId ) )
{
var checkInBinaryFileType = new BinaryFileTypeService( rockContext )
.Get( Rock.SystemGuid.BinaryFiletype.CHECKIN_LABEL.AsGuid() );
if ( checkInBinaryFileType != null && (
( prevBinaryFileTypeId.HasValue && prevBinaryFileTypeId.Value == checkInBinaryFileType.Id ) ||
( binaryFile.BinaryFileTypeId.HasValue && binaryFile.BinaryFileTypeId.Value == checkInBinaryFileType.Id ) ) )
{
Rock.CheckIn.KioskDevice.FlushAll();
}
}
NavigateToParentPage();
}
示例14: btnConfirm_Click
//.........这里部分代码省略.........
#region Attributes
var selectedCategories = new List<CategoryCache>();
foreach ( string categoryGuid in GetAttributeValue( "AttributeCategories" ).SplitDelimitedValues() )
{
var category = CategoryCache.Read( categoryGuid.AsGuid(), rockContext );
if ( category != null )
{
selectedCategories.Add( category );
}
}
var attributes = new List<AttributeCache>();
var attributeValues = new Dictionary<int, string>();
int categoryIndex = 0;
foreach ( var category in selectedCategories.OrderBy( c => c.Name ) )
{
PanelWidget pw = null;
string controlId = "pwAttributes_" + category.Id.ToString();
if ( categoryIndex % 2 == 0 )
{
pw = phAttributesCol1.FindControl( controlId ) as PanelWidget;
}
else
{
pw = phAttributesCol2.FindControl( controlId ) as PanelWidget;
}
categoryIndex++;
if ( pw != null )
{
var orderedAttributeList = new AttributeService( rockContext ).GetByCategoryId( category.Id )
.OrderBy( a => a.Order ).ThenBy( a => a.Name );
foreach ( var attribute in orderedAttributeList )
{
if ( attribute.IsAuthorized( Authorization.EDIT, CurrentPerson ) )
{
var attributeCache = AttributeCache.Read( attribute.Id );
Control attributeControl = pw.FindControl( string.Format( "attribute_field_{0}", attribute.Id ) );
if ( attributeControl != null && SelectedFields.Contains( attributeControl.ClientID ) )
{
string newValue = attributeCache.FieldType.Field.GetEditValue( attributeControl, attributeCache.QualifierValues );
attributes.Add( attributeCache );
attributeValues.Add( attributeCache.Id, newValue );
}
}
}
}
}
if ( attributes.Any() )
{
foreach ( var person in people )
{
person.LoadAttributes();
foreach ( var attribute in attributes )
{
string originalValue = person.GetAttributeValue( attribute.Key );
string newValue = attributeValues[attribute.Id];
if ( ( originalValue ?? string.Empty ).Trim() != ( newValue ?? string.Empty ).Trim() )
{
Rock.Attribute.Helper.SaveAttributeValue( person, attribute, newValue, rockContext );
示例15: BuildAttributes
private void BuildAttributes( RockContext rockContext, bool setValues = false )
{
var selectedCategories = new List<CategoryCache>();
foreach ( string categoryGuid in GetAttributeValue( "AttributeCategories" ).SplitDelimitedValues() )
{
var category = CategoryCache.Read( categoryGuid.AsGuid(), rockContext );
if ( category != null )
{
selectedCategories.Add( category );
}
}
int categoryIndex = 0;
foreach( var category in selectedCategories.OrderBy( c => c.Name ) )
{
var pw = new PanelWidget();
if ( categoryIndex % 2 == 0)
{
phAttributesCol1.Controls.Add( pw );
}
else
{
phAttributesCol2.Controls.Add( pw );
}
pw.ID = "pwAttributes_" + category.Id.ToString();
categoryIndex++;
if ( !string.IsNullOrWhiteSpace( category.IconCssClass ) )
{
pw.TitleIconCssClass = category.IconCssClass;
}
pw.Title = category.Name;
var orderedAttributeList = new AttributeService( rockContext ).GetByCategoryId( category.Id )
.OrderBy( a => a.Order ).ThenBy( a => a.Name );
foreach ( var attribute in orderedAttributeList )
{
if ( attribute.IsAuthorized( Authorization.EDIT, CurrentPerson ) )
{
var attributeCache = AttributeCache.Read( attribute.Id );
string clientId = string.Format( "{0}_attribute_field_{1}", pw.ClientID, attribute.Id );
bool controlEnabled = SelectedFields.Contains( clientId, StringComparer.OrdinalIgnoreCase );
string iconCss = controlEnabled ? "fa-check-circle-o" : "fa-circle-o";
string labelText = string.Format( "<span class='js-select-item'><i class='fa {0}'></i></span> {1}", iconCss, attributeCache.Name );
Control control = attributeCache.AddControl( pw.Controls, string.Empty, string.Empty, setValues, true, false, labelText );
if ( !( control is RockCheckBox ) )
{
var webControl = control as WebControl;
if ( webControl != null )
{
webControl.Enabled = controlEnabled;
}
}
}
}
}
}