❔ Naming enum value for level or floor for a building

Hi, so, I've read some posts saying it is not descriptive at all to name enum values like "One", "Two", "Three", etc.. However, if it is used for a building where there's level/floor, wouldn't it make sense to name it as those aforementioned values? Or should it be like "LevelOne", "LevelTwo", etc...
18 Replies
Yawnder
Yawnder2y ago
This shouldn't be an enum. Either have a "level" property, an int like suggested, or something more descriptive that can be properly localized and adapted, imo. It's a reference data and should be treated as such I think.
CoreVisional
CoreVisional2y ago
Okay, so, I have a model already, say ClassroomLocation, and a location definitely have a floor/level in a building. So I thought of to create an enum for it and display it as a drop-down list, which it works as expected, till saving it in database and then displaying the details become an issue. So that's current way of using enum for flood/level numbers. If not using enum, then wdym by "property". And where should this property goes if it's not enum and shouldn't be under "Enums" folder
Anton
Anton2y ago
you should be able to customize the value collections of your dropdowns property means field and get or set, or both public int Floor { get; set; } enums don't have to be in enums folder, they can be anywhere I'd define them closer to where I'd actually use them
CoreVisional
CoreVisional2y ago
Okay, I have define this in my model like so public int Level { get; set; }. As for the dropdown value, in my razor view, I'll have to loop for the numbers?
Anton
Anton2y ago
yeah probably
CoreVisional
CoreVisional2y ago
Is it possible to make it dynamic btw? Right now, I'm looping in my razor view, and that's hardcoding it already. How do I make it so that the dropdown value is retrieved from somewhere else that is set by, say an admin of the respective department using the dashboard? Like, they set the name of the block / floor numbers, and whoever is creating a new classroom location, the dropdown value is based on the value set by the admin.
Anton
Anton2y ago
you could make the max value of the loop a property on the model and retrieve it from the database when you generate the page
CoreVisional
CoreVisional2y ago
Hmm, wouldn't that also hardcoding it? Like for example if the management decided to expand the building, new floors getting added, then I'll have to go into the source code and increment the value instead of adding new floor in the dashboard?
Anton
Anton2y ago
you add it in the dashboard, it gets saved into the database. then in your code you query the database and render the page with the latest value
CoreVisional
CoreVisional2y ago
I'm assuming this does not require an additional model like a "Level" model or "Block" model right?
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
Anton
Anton2y ago
more like BuildingConfiguration you do need to link the dashboad settings to something
CoreVisional
CoreVisional2y ago
Yeah I went with this initially, I had something like
[Display(Name = "Level 1")]
LevelOne,

[Display(Name = "Level 2")]
LevelTwo,
[Display(Name = "Level 1")]
LevelOne,

[Display(Name = "Level 2")]
LevelTwo,
Then when I save the data in the database (converting it to string), it would save "LevelOne". Since the floor number should be in integer, I figure maybe I shouldn't be using enum since I only need the integer to be saved into the database. So a simple loop maybe would do. I also know that I can just do LevelOne = 1, LevelTwo = 2 when using enum, but again, wouldn't it be better to just loop?
Unknown User
Unknown User2y ago
Message Not Public
Sign In & Join Server To View
CoreVisional
CoreVisional2y ago
Is that a settings or a model? And when you say linking the dashboard settings, do you mean to link the values set for block / level by the admin to the dropdown? I'm using EF Core. But yeah, I found enums to be easily understood, at least for me. But since I'm looking to dynamically add the block / levels, I think I might need to ditch enum as I'll be hardcoding the floor numbers
Anton
Anton2y ago
I'm just saying that the settings from the dashboard get saved in the database, from which it then will be pulled when rendering the page. How you implement it exactly is up to you
Yawnder
Yawnder2y ago
No it's not. What if you dig another floor. What if you add another floor? You need to open the source code just to edit the enum for a business reason while you should just insert a row in a database or in your configuration json .
Accord
Accord2y ago
Was this issue resolved? If so, run /close - otherwise I will mark this as stale and this post will be archived until there is new activity.