Пример #1
0
 public async Task <ActionResult> Remove(int id)
 {
     using (ExtensionEntryDataProvider dataProvider = new ExtensionEntryDataProvider()) {
         if (!await dataProvider.RemoveItemByIdentityAsync(id))
         {
             throw new Error(this.__ResStr("cantRemove", "Couldn't remove extension with id {0}", id));
         }
         return(Reload(null, Reload: ReloadEnum.ModuleParts));
     }
 }
Пример #2
0
        public async Task <ActionResult> EditExtension(string extension)
        {
            using (ExtensionEntryDataProvider dataProvider = new ExtensionEntryDataProvider()) {
                EditModel model     = new EditModel {
                };
                ExtensionEntry data = await dataProvider.GetItemAsync(extension);

                if (data == null)
                {
                    throw new Error(this.__ResStr("notFound", "Extension \"{0}\" not found"), extension);
                }
                model.SetData(data);
                Module.Title = this.__ResStr("modTitle", "Extension \"{0}\"", extension);
                return(View(model));
            }
        }
Пример #3
0
        public async Task <ActionResult> AddExtension_Partial(AddModel model)
        {
            if (!ModelState.IsValid)
            {
                return(PartialView(model));
            }

            using (ExtensionEntryDataProvider dataProvider = new ExtensionEntryDataProvider()) {
                if (!await dataProvider.AddItemAsync(model.GetData()))
                {
                    ModelState.AddModelError(nameof(AddModel.Extension), this.__ResStr("dup", "An entry for extension {0} already exists", model.Extension));
                    return(PartialView(model));
                }
                return(FormProcessed(model, this.__ResStr("okSaved", "New extension saved"), OnPopupClose: OnPopupCloseEnum.ReloadModule));
            }
        }
Пример #4
0
        private GridDefinition GetGridModel()
        {
            return(new GridDefinition {
                SizeStyle = GridDefinition.SizeStyleEnum.SizeToFit,
                ModuleGuid = Module.ModuleGuid,
                //SettingsModuleGuid = Module.PermanentGuid,
                RecordType = typeof(BrowseItem),
                AjaxUrl = GetActionUrl(nameof(BrowseVoiceMails_GridData)),
                DirectDataAsync = async(int skip, int take, List <DataProviderSortInfo> sort, List <DataProviderFilterInfo> filters) => {
                    List <string> extensions = new List <string>();
                    if (!Manager.HasSuperUserRole)
                    {
                        using (ExtensionEntryDataProvider extDP = new ExtensionEntryDataProvider()) {
                            extensions = await extDP.GetExtensionsForUserAsync(Manager.UserId);
                        }
                        if (extensions.Count == 0)
                        {
                            throw new Error(this.__ResStr("noInbox", "No extension defined for the current user"));
                        }
                    }
                    DisplayVoiceMailModule dispMod = (DisplayVoiceMailModule)await ModuleDefinition.LoadAsync(ModuleDefinition.GetPermanentGuid(typeof(DisplayVoiceMailModule)));

                    using (VoiceMailDataProvider dataProvider = new VoiceMailDataProvider()) {
                        List <DataProviderFilterInfo> extFilters = null;
                        foreach (string extension in extensions)
                        {
                            extFilters = DataProviderFilterInfo.Join(extFilters, new DataProviderFilterInfo {
                                Field = nameof(ExtensionEntry.Extension), Operator = "==", Value = extension
                            }, SimpleLogic: "||");
                        }
                        if (extFilters != null)
                        {
                            filters = DataProviderFilterInfo.Join(filters, new DataProviderFilterInfo {
                                Filters = extFilters, Logic = "||"
                            });
                        }
                        DataProviderGetRecords <VoiceMailData> browseItems = await dataProvider.GetItemsAsync(skip, take, sort, filters);

                        return new DataSourceResult {
                            Data = (from s in browseItems.Data select new BrowseItem(Module, dispMod, s)).ToList <object>(),
                            Total = browseItems.Total
                        };
                    }
                },
            });
        }
Пример #5
0
        private GridDefinition GetGridModel()
        {
            return(new GridDefinition {
                SizeStyle = GridDefinition.SizeStyleEnum.SizeToFit,
                ModuleGuid = Module.ModuleGuid,
                SettingsModuleGuid = Module.PermanentGuid,
                RecordType = typeof(BrowseItem),
                AjaxUrl = GetActionUrl(nameof(BrowseExtensions_GridData)),
                DirectDataAsync = async(int skip, int take, List <DataProviderSortInfo> sort, List <DataProviderFilterInfo> filters) => {
                    using (ExtensionEntryDataProvider dataProvider = new ExtensionEntryDataProvider()) {
                        DataProviderGetRecords <ExtensionEntry> browseItems = await dataProvider.GetItemsAsync(skip, take, sort, filters);

                        return new DataSourceResult {
                            Data = (from s in browseItems.Data select new BrowseItem(Module, s)).ToList <object>(),
                            Total = browseItems.Total
                        };
                    }
                },
            });
        }
Пример #6
0
        public async Task <ActionResult> EditExtension_Partial(EditModel model)
        {
            string originalExtension = model.OriginalExtension;

            using (ExtensionEntryDataProvider dataProvider = new ExtensionEntryDataProvider()) {
                ExtensionEntry data = await dataProvider.GetItemAsync(originalExtension);// get the original item

                if (data == null)
                {
                    ModelState.AddModelError("Extension", this.__ResStr("alreadyDeleted", "Extension {0} has been removed and can no longer be updated", originalExtension));
                    return(PartialView(model));
                }
                ObjectSupport.CopyData(data, model, ReadOnly: true); // update read only properties in model in case there is an error
                if (!ModelState.IsValid)
                {
                    return(PartialView(model));
                }

                data = model.GetData(data); // merge new data into original
                model.SetData(data);        // and all the data back into model for final display

                switch (await dataProvider.UpdateItemAsync(data))
                {
                default:
                case UpdateStatusEnum.RecordDeleted:
                    ModelState.AddModelError("Name", this.__ResStr("alreadyDeleted", "Extension {0} has been removed and can no longer be updated", model.OriginalExtension));
                    return(PartialView(model));

                case UpdateStatusEnum.NewKeyExists:
                    ModelState.AddModelError("Name", this.__ResStr("alreadyExists", "Extension {0} already exists.", data.Extension));
                    return(PartialView(model));

                case UpdateStatusEnum.OK:
                    break;
                }
                return(FormProcessed(model, this.__ResStr("okSaved", "Extension saved"), OnPopupClose: OnPopupCloseEnum.ReloadModule));
            }
        }