public ServiceResponse <ApplicationVersionItem> Add(ApplicationVersionItem model)
        {
            var startTime = DateTime.Now;

            try
            {
                var facade    = this.Container.GetInstance <RequirementFacade>();
                var appFacade = this.Container.GetInstance <ApplicationFacade>();

                var version = facade.Add(model.ApplicationType.ApplicationTypeName, model.CopyFromId, model.Title,
                                         model.VersionNumber, model.IsActive, base.Email);

                version = appFacade.GetApplicationVersion(version.Id);

                base.LogMessage("Version/Add", DateTime.Now - startTime);

                return(new ServiceResponse <ApplicationVersionItem>
                {
                    Item = ModelConversions.Convert(version, null, false)
                });
            }
            catch (Exception ex)
            {
                return(base.HandleException <ApplicationVersionItem>(ex));
            }
        }
        public async Task <ServiceResponse> MakeVersionActive(ApplicationVersionItem version)
        {
            var startTime = DateTime.Now;

            try
            {
                var facade = this.Container.GetInstance <RequirementFacade>();

                await facade.MakeVersionActiveAsync(version.Id, base.Email);

                var appFacade = this.Container.GetInstance <ApplicationFacade>();

                ApplicationFacade.ActiveVersions = new Dictionary <int, ApplicationVersion>();

                HostingEnvironment.QueueBackgroundWorkItem(x =>
                {
                    appFacade.GetActiveApplicationVersions();

                    base.LogMessage("Loading Active Application Versions Completed.", new TimeSpan());
                });

                this.SendInvalidation();

                base.LogMessage("Version/MakeVersionActive", DateTime.Now - startTime);

                return(new ServiceResponse());
            }
            catch (Exception ex)
            {
                return(base.HandleException(ex));
            }
        }