Ejemplo n.º 1
0
 public void GameSteps()
 {
     resources += CreateResource.Updateh(this);
     if (resources.People > peopleLimit)
     {
         resources.People = peopleLimit;                                     //переделать
     }
 }
Ejemplo n.º 2
0
        public async virtual Task <IActionResult> CreateAsync(ResourceModel <TResource> resourceModel)
        {
            if (!User.IsAuthorized(ResourceType))
            {
                return(Unauthorized());
            }

            var createResourceEvent = new CreateResource <TResource>(resourceModel);
            var context             = await _mediator.Send(createResourceEvent);

            if (context != null)
            {
                resourceModel = context;
            }

            if (resourceModel.Errors.Any())
            {
                foreach (var error in resourceModel.Errors)
                {
                    ModelState.AddModelError(error.Key, error.Value);
                }
            }

            if (!ModelState.IsValid)
            {
                return(PartialView("_Editor", resourceModel));
            }

            int newResourceID = await _repository.CreateAsync(resourceModel.Resource, UserID);

            if (newResourceID == 0)
            {
                return(NoContent());
            }

            _logger.LogResourceCreated(ResourceType, resourceModel.ID);

            var resourceCreatedEvent = new ResourceCreated <TResource>(resourceModel.Resource);
            await _mediator.Publish(resourceCreatedEvent);

            var resourcePersistedEvent = new ResourcePersisted <TResource>();
            await _mediator.Publish(resourcePersistedEvent);

            var controllerName = ControllerContext.RouteData.Values["controller"].ToString();

            return(Created(Url.Action("ReadAsync", controllerName, new { id = newResourceID }), newResourceID));
        }
        public override Activity GenerateActivityOnWorkflow(SequentialWorkflow workflow)
        {
            Logger.Instance.WriteMethodEntry();

            try
            {
                // Create a new instance of the CreateResource activity and assign
                // dependency property values based on inputs to standard activity controls
                CreateResource wfa = new CreateResource
                {
                    ActivityDisplayName         = this.activityDisplayName.Value,
                    ResourceType                = this.resourceType.Value,
                    Advanced                    = this.advanced.Value,
                    QueryResources              = this.queryResources.Value,
                    ActivityExecutionCondition  = this.activityExecutionCondition.Value,
                    Iteration                   = this.iteration.Value,
                    ActorType                   = GetActorType(this.actorType.Value),
                    ActorString                 = this.actorString.Value,
                    ApplyAuthorizationPolicy    = this.applyAuthorizationPolicy.Value,
                    CreatedResourceIdTarget     = this.createdResourceIdTarget.Value,
                    CheckForConflict            = this.checkForConflict.Value,
                    ConflictFilter              = this.conflictFilter.Value,
                    ConflictingResourceIdTarget = this.conflictingResourceIdTarget.Value,
                    FailOnConflict              = this.failOnConflict.Value
                };

                // Convert the definition listings (web controls) to hash tables which can be serialized to the XOML workflow definition
                // A hash table is used due to issues with deserialization of lists and other structured data
                DefinitionsConverter queriesConverter    = new DefinitionsConverter(this.queries.DefinitionListings);
                DefinitionsConverter attributesConverter = new DefinitionsConverter(this.attributes.DefinitionListings);
                wfa.QueriesTable    = queriesConverter.DefinitionsTable;
                wfa.AttributesTable = attributesConverter.DefinitionsTable;

                return(wfa);
            }
            catch (Exception e)
            {
                Logger.Instance.ReportError(e);
                throw;
            }
            finally
            {
                Logger.Instance.WriteMethodExit();
            }
        }
        /// <summary>
        /// This method initializes activity UI controls to their default values.
        /// </summary>
        /// <param name="activity">An instance of the current workflow activity. This provides a way to extract the values of the properties to display in the UI.</param>
        public override void LoadActivitySettings(Activity activity)
        {
            Logger.Instance.WriteMethodEntry();

            try
            {
                // Cast the supplied activity as a CreateResource activity
                CreateResource wfa = activity as CreateResource;
                if (wfa == null)
                {
                    return;
                }

                // Set form control values based on the activity's dependency properties
                this.activityDisplayName.Value         = wfa.ActivityDisplayName;
                this.resourceType.Value                = wfa.ResourceType;
                this.advanced.Value                    = wfa.Advanced;
                this.queryResources.Value              = wfa.QueryResources;
                this.activityExecutionCondition.Value  = wfa.ActivityExecutionCondition;
                this.iteration.Value                   = wfa.Iteration;
                this.actorType.Value                   = wfa.ActorType.ToString();
                this.actorString.Value                 = wfa.ActorString;
                this.applyAuthorizationPolicy.Value    = wfa.ApplyAuthorizationPolicy;
                this.createdResourceIdTarget.Value     = wfa.CreatedResourceIdTarget;
                this.checkForConflict.Value            = wfa.CheckForConflict;
                this.conflictFilter.Value              = wfa.ConflictFilter;
                this.conflictingResourceIdTarget.Value = wfa.ConflictingResourceIdTarget;
                this.failOnConflict.Value              = wfa.FailOnConflict;
                this.queries.LoadActivitySettings(wfa.QueriesTable);
                this.attributes.LoadActivitySettings(wfa.AttributesTable);
            }
            catch (Exception e)
            {
                Logger.Instance.ReportError(e);
                throw;
            }
            finally
            {
                Logger.Instance.WriteMethodExit();
            }
        }
Ejemplo n.º 5
0
        public HttpResponseMessage Post(CreateResource value)
        {
            var resource = new Resources();

            resource.Category     = value.Category;
            resource.Description  = value.Description;
            resource.ResourceName = value.ResourceName;
            resource.ResourceUrl  = value.ResourceUrl;
            resource.Date         = value.Date;
            resource.Tags         = new List <Tags>();

            foreach (var t in value.TagNames)
            {
                resource.Tags.Add(new Tags {
                    TagName = t
                });
            }
            ;

            try
            {
                if (value == null)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Incorrect Model"));
                }
                else
                {
                    db.Resources.Add(resource);
                    db.SaveChanges();
                    return(Request.CreateResponse(HttpStatusCode.OK));
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message));
            }
        }
        /// <summary>
        /// Given a *sorted* list of source data items (currentItems),
        /// and a *sorted* list of resources:
        ///    For each source item that doesn't have a matching resource, attempt to create a resource.
        ///    For each resource that doesn't have a matching source item, destroy that resource.
        ///    For each source item with a matching resource, update the resource.
        /// </summary>
        /// <remarks>
        /// After this Sync, the list of resources will have exactly one resource for each item
        /// in currentItems, and currentItems and resources will be the same length.
        /// The exception is if the creator function returns false for any item(s), then those item(s)
        /// will not have matching resources, and resources will be shorter than currentItems.
        /// In any case, resources will remain sorted.
        /// Sync completes in a single pass over the data, so in O(max(currentItems.Count, resources.Count)) time.
        /// </remarks>
        /// <typeparam name="ItemType">Type of source items.</typeparam>
        /// <typeparam name="ResourceType">Type of resources.</typeparam>
        /// <param name="currentItems">List of current source items.</param>
        /// <param name="resources">List of resources to by synced to currentItems.</param>
        /// <param name="compareIds">Function to compare an item with a resource. See above.</param>
        /// <param name="creator">Callback to create a missing resource. See above.</param>
        /// <param name="updater">Callback to update an existing resource. See above.</param>
        /// <param name="destroyer">Callback to destroy a resource which no longer has a matching source item.</param>
        public static void Sync <ItemType, ResourceType>(
            IReadOnlyList <ItemType> currentItems,
            List <ResourceType> resources,
            CompareToResource <ItemType, ResourceType> compareIds,
            CreateResource <ItemType, ResourceType> creator,
            UpdateResource <ItemType, ResourceType> updater,
            DestroyResource <ResourceType> destroyer)
        {
            int iRsrc = resources.Count - 1;
            int iItem = currentItems.Count - 1;

            while (iRsrc >= 0 && iItem >= 0)
            {
                /// If the existing resource is greater than the current item,
                /// then there is no corresponding current item. So delete the resource.
                int comparison = compareIds(currentItems[iItem], resources[iRsrc]);
                if (comparison < 0)
                {
                    /// items id less than resources, means
                    ///    no item for this resource.
                    /// delete the surplus resource.
                    destroyer(resources[iRsrc]);
                    resources.RemoveAt(iRsrc);
                    --iRsrc;
                    /// Remain on iItem
                }
                /// If the existing resource is less, then we are missing a resource for the larger current item.
                /// Add it now.
                else if (comparison > 0)
                {
                    /// items id greater than resources, means
                    ///    for this item, no matching resource.
                    /// create and add.
                    ResourceType resource;
                    if (creator(currentItems[iItem], out resource))
                    {
                        resources.Insert(iRsrc + 1, resource);
                    }
                    /// If successful, now ci[iItem] <==> re[iRsrc+1]. So move on to ci[iItem-1] / re[iRsrc];
                    /// If failed, we've tried ci[iItem] (which failed) and re[] is unchanged.
                    /// So either way move on to ci[iItem-1] / re[iRsrc]
                    --iItem;
                }
                else
                {
                    /// item and resource match, just update.
                    updater(currentItems[iItem], resources[iRsrc]);
                    --iItem;
                    --iRsrc;
                }
            }

            // If iRsrc && iItem are both less than zero, then we are done.
            // If iRsrc < 0 but iItem >= 0, then we need more resources created, from iItem on down.
            // If iRsrc >= 0 but iItem < 0, then from iRsrc down needs to be deleted.
            Debug.Assert(iRsrc < 0 || iItem < 0);
            while (iItem >= 0)
            {
                ResourceType resource;
                if (creator(currentItems[iItem], out resource))
                {
                    resources.Insert(0, resource);
                }
                --iItem;
            }
            while (iRsrc >= 0)
            {
                destroyer(resources[iRsrc]);
                resources.RemoveAt(iRsrc);
                --iRsrc;
            }
            Debug.Assert(resources.Count <= currentItems.Count);
        }
 protected void Initialize(CreateResource res)
 {
 }
 protected Foo(CreateResource res)
 {
     Initialize(res);
 }
Ejemplo n.º 9
0
        public JsonNetResult EditResource(CreateResource res, string editID)
        {
            try
            {
                var itemID = Guid.Parse(editID);

                //Update ResoureItem

                ResourceItem originalResource = new ResourceItem()
                {
                    ItemID          = itemID,
                    Title           = res.Title,
                    ItemDescription = res.ItemDescription,
                    Url             = res.Url,
                    UrlThumbnail    = res.UrlThumbnail,
                    TypeID          = res.TypeID,
                    StatusID        = res.StatusID,
                    PostDate        = res.PostDate ?? DateTime.Now.ToCST(),
                    Language        = res.Language,
                    CreatedDate     = DateTime.Now.ToCST(),
                };

                Exigo.ModifyResourceItem(originalResource);

                //Current Availabilities
                List <ResourceAvailability> currentAvailability = Exigo.GetResourceAvailabilities(new GetResourceAvailabilitiesRequest()
                {
                    ItemID = originalResource.ItemID
                }).ToList();

                //Wanted Availabilities
                List <ResourceAvailability> keepAvailabilities   = new List <ResourceAvailability>();
                List <Available>            neededAvailabilities = new List <Available>();
                foreach (var market in res.Markets)
                {
                    var availability = new Available();
                    availability.Language = res.Language;
                    availability.Market   = market;
                    var exist = currentAvailability.Where(ca => ca.Language == availability.Language && ca.Market == availability.Market).FirstOrDefault();
                    if (exist == null)
                    {
                        neededAvailabilities.Add(availability);
                    }
                    else
                    {
                        keepAvailabilities.Add(exist);
                    }
                }



                //Add NEW Availabilities
                foreach (var avail in neededAvailabilities)
                {
                    ResourceAvailability availableresource = new ResourceAvailability()
                    {
                        AvailabilityID = Guid.NewGuid(),
                        ItemID         = originalResource.ItemID,
                        Market         = avail.Market,
                        Language       = avail.Language
                    };
                    Exigo.CreateResourceAvailabilities(availableresource);
                }

                //Delete Availabilities no longer wanted
                List <Guid> deleteAvailabilities = currentAvailability.Except(keepAvailabilities).Select(t => t.AvailabilityID).ToList();
                Exigo.DeleteResourceAvailabilities(deleteAvailabilities);

                //Modify ResourceCategoryItems

                // Current ResourceCategoryItems CategoryIDs
                var RCI = Exigo.GetResourceCategoryItems(new GetResourceCategoryItemsRequest()
                {
                    ItemID = originalResource.ItemID
                });
                var currentRCI = RCI.Select(rci => rci.CategoryID);

                // Wanted CategoryIDs
                var wantedRCI = res.CategoryID;

                // Needed CategoryIDs
                var neededRCI = wantedRCI.Except(currentRCI);

                //Add New CategoryItems


                foreach (var category in neededRCI)
                {
                    var lastResource = Exigo.GetResourceCategoryItems(new GetResourceCategoryItemsRequest()
                    {
                        CategoryID = category
                    })
                                       .OrderByDescending(r => r.ItemOrder)
                                       .FirstOrDefault();
                    int lastItemOrder = InitialOrderValue - 1;
                    if (lastResource != null)
                    {
                        lastItemOrder = lastResource.ItemOrder;
                    }

                    ResourceCategoryItem categoryItem = new ResourceCategoryItem()
                    {
                        ItemID     = originalResource.ItemID,
                        CategoryID = category,
                        ItemOrder  = lastItemOrder
                    };
                    Exigo.CreateResourceCategoryItem(categoryItem);
                }
                //Delete Unwanted CategoryItems
                var unwantedRCICategoryIDs = currentRCI.Except(wantedRCI).ToList();
                if (unwantedRCICategoryIDs.Any())
                {
                    Exigo.DeleteResourceCategoryItems(itemID, unwantedRCICategoryIDs);
                }


                List <Tag> tags = new List <Tag>();



                if (res.Keywords.Any())
                {
                    // check to see if tag existis with these keywords. if not add it

                    //Get A List Of Tags Using Provided Keywords
                    var existingTags = Exigo.GetTagsForResources(new GetTagsForResourcesRequest()
                    {
                        Names = res.Keywords
                    });
                    var existingTagNames = existingTags.Select(et => et.Name);

                    //Get a List of Keywords we need to make tags for
                    var newTagsneeded = res.Keywords.Except(existingTagNames);

                    //Create The New Tags
                    List <Tag> NewlyCreatedTags = new List <Tag>();
                    foreach (var keyword in newTagsneeded)
                    {
                        Tag newTag = new Tag()
                        {
                            TagID = Guid.NewGuid(),
                            Name  = keyword
                        };
                        NewlyCreatedTags.Add(newTag);
                        Exigo.CreateTag(newTag);
                    }

                    //Combine existing and New Tags
                    var completeTagList = existingTags.Union(NewlyCreatedTags).ToList();
                    var completeTagIDs  = completeTagList.Select(v => v.TagID);

                    //Get a list of ItemTags currently associated with the Item
                    var currentItemTagIDs = Exigo.GetResourceItemTags(new GetResourceItemTagsRequest()
                    {
                        ItemID = originalResource.ItemID
                    }).Select(v => v.TagID);

                    //Get a list of Tags we need to make ItemTags for
                    var newItemTagsneeded = completeTagList.Where(t => !currentItemTagIDs.Contains(t.TagID));

                    // Update ResourceItemTags Table with new Tags
                    foreach (var tagneeded in newItemTagsneeded)
                    {
                        ResourceItemTag rit = new ResourceItemTag()
                        {
                            TagID  = tagneeded.TagID,
                            ItemID = itemID,
                        };
                        Exigo.CreateResourceItemTag(rit);
                    }

                    // remove any pivot table tags that are no longer being used for this resource
                    var nolongerwanted = currentItemTagIDs.Except(completeTagIDs).ToList();
                    if (nolongerwanted.Count > 0)
                    {
                        Exigo.DeleteResourceItemTags(nolongerwanted);
                    }
                }

                return(new JsonNetResult(new
                {
                    success = true,
                }));
            }
            catch (Exception ex)
            {
                return(new JsonNetResult(new
                {
                    success = false,
                    message = ex.Message
                }));
            }
        }
Ejemplo n.º 10
0
        public JsonNetResult CreateResource(CreateResource res)
        {
            try
            {
                // Create Resource Item
                ResourceItem resource = new ResourceItem()
                {
                    ItemID          = Guid.NewGuid(),
                    Title           = res.Title,
                    ItemDescription = res.ItemDescription,
                    TypeID          = res.TypeID,
                    Url             = res.Url,
                    UrlThumbnail    = res.UrlThumbnail,
                    CreatedDate     = DateTime.Now.ToCST(),
                    PostDate        = res.PostDate >= DateTime.Now.AddHours(1) ? res.PostDate : null,
                    StatusID        = res.StatusID,
                    Language        = res.Language
                };
                Exigo.CreateResourceItem(resource);

                //Create Resource Category Item
                foreach (var categoryID in res.CategoryID)
                {
                    //2015-09-08
                    //Ivan S.
                    //66
                    //Sets the initial order for the new resource to the maximum number for that category
                    var lastResource = Exigo.GetResourceCategoryItems(new GetResourceCategoryItemsRequest()
                    {
                        CategoryID = categoryID
                    })
                                       .OrderByDescending(r => r.ItemOrder)
                                       .FirstOrDefault();
                    int lastCategoryOrder = InitialOrderValue - 1;
                    if (lastResource != null)
                    {
                        lastCategoryOrder = lastResource.ItemOrder;
                    }
                    var NewOrder = ++lastCategoryOrder;

                    ResourceCategoryItem categoryItem = new ResourceCategoryItem()
                    {
                        ItemID     = resource.ItemID,
                        CategoryID = categoryID,
                        ItemOrder  = NewOrder
                    };
                    Exigo.CreateResourceCategoryItem(categoryItem);
                }

                // Create the ResourceAvailability Entries
                if (res.Markets != null && res.Markets.Count() > 0)
                {
                    foreach (var CountryCode in res.Markets)
                    {
                        ResourceAvailability availableresource = new ResourceAvailability()
                        {
                            AvailabilityID = Guid.NewGuid(),
                            ItemID         = resource.ItemID,
                            Market         = CountryCode,
                            Language       = res.Language
                        };
                        Exigo.CreateResourceAvailabilities(availableresource);
                    }
                }

                //Create Tags
                List <Tag> Tags = new List <Tag>();
                if (res.Keywords.Count() > 0)
                {
                    var existingtags = Exigo.GetTagsForResources(new GetTagsForResourcesRequest()
                    {
                        Names = res.Keywords
                    });
                    var existingtagnames = existingtags.Select(t => t.Name).ToList();
                    var needtocreatetags = res.Keywords.Except(existingtagnames);
                    foreach (var name in needtocreatetags)
                    {
                        //See if Tag exist in DB if not create one

                        Tag newTag = new Tag()
                        {
                            TagID = Guid.NewGuid(),
                            Name  = name
                        };
                        Exigo.CreateTag(newTag);
                        Tags.Add(newTag);
                    }
                    Tags.AddRange(existingtags);
                }
                // Create the ResourceItemTag Entries
                if (Tags.Any())
                {
                    foreach (var tag in Tags)
                    {
                        ResourceItemTag rTag = new ResourceItemTag()
                        {
                            TagID  = tag.TagID,
                            ItemID = resource.ItemID
                        };
                        Exigo.CreateResourceItemTag(rTag);
                    }
                }

                return(new JsonNetResult(new
                {
                    success = true,
                }));
            }
            catch (Exception ex)
            {
                return(new JsonNetResult(new
                {
                    success = false,
                    message = ex.Message
                }));
            }
        }
 private void OnCreateResource()
 {
     CreateResource?.Invoke(this, EventArgs.Empty);
 }