* Refactor user's device assignment logic
* Extract device assignment logic into app methods
* Move device retrieval into control flow
* Move un\assign logic into control flow
* Extract mobile callflow update into own function
* Patch device owner_id instead of full update
* Move mobile callflow id retrieval to control flow
* Patch callflow to avoid having to retrieve it first
* Consolidate un\assignment logic
* Migrate single-used app methods into closure
* Extract mobile callflow update logic into app method
* Run device patch and mobile callflow update in parallel
* Move back device assignment logic to users module
* Consolidate mobile callflow update w/ user callfow fetching logic
* Update linked callflow on mobile device un\assignment
* Refactor entities update logic on device un\assignment
* Extract device data merging to own variable
* Make existing settings take precedence over defaults
Using lodash#mergeWith to take into account the fact that we are merging
down existing settings into defualts, in which case, when evaluated
values are arrays, the former should take precedence over the latter and
is then "assigned" rather than "merge".
* Assign overrides over existing settings to replace vs merge
* Restructure feature code recovery logic
* Refactor feature code recovery logic
Generically recover feature code with incorrect entries
(patterns/numbers).
We delete malformed feature codes to mitigate the use case of feature
codes wrongly configured with entries matching another feature code,
making it impossible to patch (duplicate entries error).
* Refactor createCallflow to handle errors
* MSPB-60: Disable skip_instructions if announce_only is checked
* Do not change the value of 'skip_instructions' on the voicemail object if announce_only is checked
* Update German translation
* Refactor key actions generation
* Refactor key entries structure
While key entries is provided as an object where the key corresponds to
the entrie's number, this complexity does not have to make it to the
template.
We already fill up empty entries by generating an array of key entries
length, hence no need to switch back to an object structure.
* Render combo keys count by section title
* Add save and apply button in edit device form
* Use single button with dropup in edit device actions
* Do not show dropup when the device edited is not privisionable
* Show droup button just if the edited device is register
* Fix group sorting by name
* Pass down ring groups to be selected in next action feature
* Expose ring group selection in template
* Set selected entity with helper rather than manually
* Extract template data formatting into own function
* Clean up next action feature data formatter
- generate categories in logic rather than template
- sort categories/entities alphabetically
- don't render empty categories
* Refactor device listing formatter with declarative style
* Refactor device edition formatter with declarative style
* Consolidate device edition data fetcher
* Consolidate device edition data formatter
* Generate addable device types from static list
* Allow for device types without edition template to be deleted
* Support application device type in pie chart breakdown
* List device types up to total colors available
When the list of device types is greater than the list of colors
available, overflowing types gets agglutinated into a static "Others"
type.
* Keep device types chart colors order
* Enforce linting rules
* Refactor usersData generation with declarative style
* Refactor totalChannels generation with declarative style
* Refactor assignedNumbers generation with declarative style
The numberTypesData related entities were removed as this
functionnatility is taken care of by classifiedNumbers.
* Create function to resolve chart color by an index
* Refactor unregisteredDevices generation with declarative style
* Refactor devicesData generation with declarative style
* Refactor classifiedNumbers generation with declarative style
* Refactor smart callflows generation with declartive style
* Refactor topMessage generation with declarative style
* Refactor directoryLink generation with declarative style