Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
2
2018-app-inutralia
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
inutralia
2018-app-inutralia
Commits
fb2a7603
Commit
fb2a7603
authored
Jan 16, 2019
by
Javier Piris
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Agrupadas ordenadamente todos los modelos en el proyecto models
parent
140540f0
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
241 additions
and
18 deletions
+241
-18
Article.cs
inutralia/inutralia.Models/Articles/Article.cs
+0
-0
Day.cs
inutralia/inutralia.Models/Menu/Day.cs
+0
-0
Generic.cs
inutralia/inutralia.Models/Menu/Generic.cs
+0
-0
Ingredient.cs
inutralia/inutralia.Models/Menu/Ingredient.cs
+20
-0
LocalMenu.cs
inutralia/inutralia.Models/Menu/LocalMenu.cs
+0
-0
Menu.cs
inutralia/inutralia.Models/Menu/Menu.cs
+0
-0
MenuBase.cs
inutralia/inutralia.Models/Menu/MenuBase.cs
+0
-0
Profile.cs
inutralia/inutralia.Models/Profile/Profile.cs
+0
-0
QuestionMessage.cs
inutralia/inutralia.Models/Questions/QuestionMessage.cs
+36
-0
QuestionSpecialist.cs
inutralia/inutralia.Models/Questions/QuestionSpecialist.cs
+45
-0
Recipe.cs
inutralia/inutralia.Models/Recipe/Recipe.cs
+0
-0
RecipeOption.cs
inutralia/inutralia.Models/Recipe/RecipeOption.cs
+0
-0
RecipeOptionGroup.cs
inutralia/inutralia.Models/Recipe/RecipeOptionGroup.cs
+0
-0
ShoppingList.cs
inutralia/inutralia.Models/ShoppingList/ShoppingList.cs
+0
-0
TrivialGame.cs
inutralia/inutralia.Models/Trivial/TrivialGame.cs
+0
-0
BoolConverter.cs
inutralia/inutralia.Models/Utils/BoolConverter.cs
+0
-0
DataPathAttribute.cs
inutralia/inutralia.Models/Utils/DataPathAttribute.cs
+0
-0
ObservableEntityData.cs
inutralia/inutralia.Models/Utils/ObservableEntityData.cs
+0
-0
inutralia.Models.csproj
inutralia/inutralia.Models/inutralia.Models.csproj
+24
-18
QuestionListViewModel.cs
...a/ViewModels/QuestionsSpecialist/QuestionListViewModel.cs
+116
-0
No files found.
inutralia/inutralia.Models/Article.cs
→
inutralia/inutralia.Models/Article
s/Article
.cs
View file @
fb2a7603
File moved
inutralia/inutralia.Models/Day.cs
→
inutralia/inutralia.Models/
Menu/
Day.cs
View file @
fb2a7603
File moved
inutralia/inutralia.Models/Generic.cs
→
inutralia/inutralia.Models/
Menu/
Generic.cs
View file @
fb2a7603
File moved
inutralia/inutralia.Models/Menu/Ingredient.cs
0 → 100644
View file @
fb2a7603
using
Newtonsoft.Json
;
namespace
inutralia.Models
{
[
JsonObject
(
MemberSerialization
.
OptIn
)]
[
DataPath
(
"recipe"
)]
public
class
Ingredient
:
ObservableEntityData
{
[
JsonProperty
(
"name"
,
Required
=
Required
.
Always
)]
public
string
Name
{
get
;
set
;
}
[
JsonProperty
(
"cuantity"
)]
public
string
Cuantity
{
get
;
set
;
}
[
JsonProperty
(
"order"
)]
public
int
Order
{
get
;
set
;
}
public
Ingredient
()
{
}
}
}
inutralia/inutralia.Models/LocalMenu.cs
→
inutralia/inutralia.Models/
Menu/
LocalMenu.cs
View file @
fb2a7603
File moved
inutralia/inutralia.Models/Menu.cs
→
inutralia/inutralia.Models/Menu
/Menu
.cs
View file @
fb2a7603
File moved
inutralia/inutralia.Models/MenuBase.cs
→
inutralia/inutralia.Models/Menu
/Menu
Base.cs
View file @
fb2a7603
File moved
inutralia/inutralia.Models/Profile.cs
→
inutralia/inutralia.Models/Profile
/Profile
.cs
View file @
fb2a7603
File moved
inutralia/inutralia.Models/Questions/QuestionMessage.cs
0 → 100644
View file @
fb2a7603
using
inutralia.Utils
;
using
Newtonsoft.Json
;
using
System
;
namespace
inutralia.Models
{
[
JsonObject
(
MemberSerialization
.
OptIn
)]
public
class
QuestionMessage
:
ObservableEntityData
{
public
bool
FromExpert
=>
!
FromUser
;
public
QuestionMessage
()
{
Text
=
""
;
FromUser
=
true
;
CreatedAt
=
DateUtilities
.
formatedDateToTimeStamp
(
DateTime
.
UtcNow
);
}
[
JsonProperty
(
"message"
,
Required
=
Required
.
Always
)]
private
string
_Text
;
public
string
Text
{
get
{
return
_Text
;
}
set
{
SetProperty
(
ref
_Text
,
value
,
"Text"
);
}
}
[
JsonProperty
(
"from_user"
,
Required
=
Required
.
Always
)]
public
bool
FromUser
{
get
;
set
;
}
[
JsonProperty
(
"created_at"
,
Required
=
Required
.
Always
)]
public
int
CreatedAt
{
get
;
set
;
}
[
JsonProperty
(
"image"
,
Required
=
Required
.
Always
)]
public
string
Image
{
get
;
set
;
}
}
}
inutralia/inutralia.Models/Questions/QuestionSpecialist.cs
0 → 100644
View file @
fb2a7603
using
Newtonsoft.Json
;
using
Newtonsoft.Json.Converters
;
using
System.Collections.Generic
;
using
System
;
using
inutralia.Utils
;
namespace
inutralia.Models
{
[
JsonObject
(
MemberSerialization
.
OptIn
)]
[
DataPath
(
"questionList"
)]
public
class
QuestionSpecialist
:
ObservableEntityData
{
public
QuestionSpecialist
()
{
State
=
0
;
UpdatedAt
=
DateUtilities
.
formatedDateToTimeStamp
(
DateTime
.
UtcNow
);
}
public
enum
Estatus
{
Pending
,
Answered
,
Closed
}
public
string
StatusImg
=>
imgStatus
[
StateId
];
[
JsonProperty
(
"estado_id"
,
Required
=
Required
.
Always
)]
public
int
StateId
{
get
;
set
;
}
[
JsonProperty
(
"status"
,
Required
=
Required
.
Always
)]
[
JsonConverter
(
typeof
(
StringEnumConverter
))]
public
Estatus
State
{
get
;
set
;
}
[
JsonProperty
(
"updated_at"
,
Required
=
Required
.
Always
)]
public
int
UpdatedAt
{
get
;
set
;
}
[
JsonProperty
(
"messages"
,
Required
=
Required
.
Always
)]
public
IEnumerable
<
QuestionMessage
>
Messages
{
get
;
set
;
}
string
[]
imgStatus
=
new
string
[
3
]
{
"message_status_cerrada.png"
,
// 3 - Cerrada pregunta
"message_status_pendiente.png"
,
// 7 - Pendiente de responder
"message_status_respondido.png"
,
// 8 - Respondida
};
}
}
\ No newline at end of file
inutralia/inutralia.Models/Recipe.cs
→
inutralia/inutralia.Models/Recipe
/Recipe
.cs
View file @
fb2a7603
File moved
inutralia/inutralia.Models/RecipeOption.cs
→
inutralia/inutralia.Models/Recipe
/Recipe
Option.cs
View file @
fb2a7603
File moved
inutralia/inutralia.Models/RecipeOptionGroup.cs
→
inutralia/inutralia.Models/Recipe
/Recipe
OptionGroup.cs
View file @
fb2a7603
File moved
inutralia/inutralia.Models/ShoppingList.cs
→
inutralia/inutralia.Models/ShoppingList
/ShoppingList
.cs
View file @
fb2a7603
File moved
inutralia/inutralia.Models/TrivialGame.cs
→
inutralia/inutralia.Models/Trivial
/Trivial
Game.cs
View file @
fb2a7603
File moved
inutralia/inutralia.Models/BoolConverter.cs
→
inutralia/inutralia.Models/
Utils/
BoolConverter.cs
View file @
fb2a7603
File moved
inutralia/inutralia.Models/DataPathAttribute.cs
→
inutralia/inutralia.Models/
Utils/
DataPathAttribute.cs
View file @
fb2a7603
File moved
inutralia/inutralia.Models/ObservableEntityData.cs
→
inutralia/inutralia.Models/
Utils/
ObservableEntityData.cs
View file @
fb2a7603
File moved
inutralia/inutralia.Models/inutralia.Models.csproj
View file @
fb2a7603
...
...
@@ -29,31 +29,37 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Compile Include="BoolConverter.cs" />
<Compile Include="LocalMenu.cs" />
<Compile Include="MenuBase.cs" />
<Compile Include="
Utils\
BoolConverter.cs" />
<Compile Include="
Menu\
LocalMenu.cs" />
<Compile Include="Menu
\Menu
Base.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="ObservableEntityData.cs" />
<Compile Include="Profile.cs" />
<Compile Include="Ingredient.cs" />
<Compile Include="Menu.cs" />
<Compile Include="Recipe.cs" />
<Compile Include="RecipeOption.cs" />
<Compile Include="RecipeOptionGroup.cs" />
<Compile Include="ShoppingList.cs" />
<Compile Include="TrivialGame.cs" />
<Compile Include="TrivialQuestion.cs" />
<Compile Include="User.cs" />
<Compile Include="Generic.cs" />
<Compile Include="Day.cs" />
<Compile Include="DataPathAttribute.cs" />
<Compile Include="Article.cs" />
<Compile Include="Utils\ObservableEntityData.cs" />
<Compile Include="Profile\Profile.cs" />
<Compile Include="Menu\Ingredient.cs" />
<Compile Include="Menu\Menu.cs" />
<Compile Include="Questions\QuestionMessage.cs" />
<Compile Include="Questions\QuestionSpecialist.cs" />
<Compile Include="Recipe\Recipe.cs" />
<Compile Include="Recipe\RecipeOption.cs" />
<Compile Include="Recipe\RecipeOptionGroup.cs" />
<Compile Include="ShoppingList\ShoppingList.cs" />
<Compile Include="Trivial\TrivialGame.cs" />
<Compile Include="Trivial\TrivialQuestion.cs" />
<Compile Include="Profile\User.cs" />
<Compile Include="Menu\Generic.cs" />
<Compile Include="Menu\Day.cs" />
<Compile Include="Utils\DataPathAttribute.cs" />
<Compile Include="Articles\Article.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\inutralia.Abstract\inutralia.Abstractions.csproj">
<Project>{ee196ae1-7332-479f-8c2e-b7b6caa873b0}</Project>
<Name>inutralia.Abstractions</Name>
</ProjectReference>
<ProjectReference Include="..\inutralia.Utils\inutralia.Utils.csproj">
<Project>{47ED81AD-7EB7-45B7-9AF7-7059C8CC6185}</Project>
<Name>inutralia.Utils</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Reference Include="MvvmHelpers, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
...
...
inutralia/inutralia/ViewModels/QuestionsSpecialist/QuestionListViewModel.cs
0 → 100644
View file @
fb2a7603
using
inutralia.Models
;
using
MvvmHelpers
;
// Este namespace está en el paquete Refractored.MvvmHelpers
using
System
;
using
System.Threading.Tasks
;
using
Xamarin.Forms
;
namespace
inutralia.ViewModels
{
/// <summary>
/// ViewModel del listado de preguntas. Hereda de MvvmHelpers.BaseViewModel
/// </summary>
public
class
QuestionListViewModel
:
BaseViewModel
{
public
QuestionListViewModel
()
{
}
// Datos del histórico
ObservableRangeCollection
<
QuestionSpecialist
>
_QuestionList
;
// Comando de loading del listado
Command
_LoadQuestionListCommand
;
// Comando de actualización del listado del listado
Command
_RefreshQuestionListCommand
;
// Acceso a la lista preguntas
public
ObservableRangeCollection
<
QuestionSpecialist
>
QuestionList
{
// Getter (lazy load), crea la lista si no exite
get
=>
_QuestionList
??
(
_QuestionList
=
new
ObservableRangeCollection
<
QuestionSpecialist
>());
// Setter. Cambia el valor y notifica a la vista de dicho cambio
set
{
_QuestionList
=
value
;
OnPropertyChanged
(
"QuestionList"
);
}
}
public
Command
LoadQuestionListCommand
{
get
{
return
_LoadQuestionListCommand
??
(
_LoadQuestionListCommand
=
new
Command
(
async
()
=>
await
ExecuteLoadQuestionListCommand
()));
}
}
/// <summary>
/// Método que realiza la carga inicial del listado
/// </summary>
public
async
Task
ExecuteLoadPollProfessionalCommand
()
{
// Realiza el proceso de actualización si hay menos de un
// elemento en el listado
LoadQuestionListCommand
.
ChangeCanExecute
();
//if (Notifications.Count < 1)
await
FetchQuestionList
();
LoadQuestionListCommand
.
ChangeCanExecute
();
}
/// <summary>
/// Método que realiza la carga inicial del listado
/// </summary>
public
async
Task
ExecuteLoadQuestionListCommand
()
{
// Realiza el proceso de actualización si hay menos de un
// elemento en el listado
if
(
QuestionList
.
Count
<
1
)
await
FetchQuestionList
();
}
/// <summary>
/// Acceso al comando de actualización del listado
/// </summary>
public
Command
RefreshQuestionListCommand
{
// Getter (lazy load), crea el comando si no existe
get
{
return
_RefreshQuestionListCommand
??
(
_RefreshQuestionListCommand
=
new
Command
(
async
()
=>
await
ExecuteRefreshQuestionListCommand
()));
}
}
/// <summary>
/// Proceso de ejecución del comando de actualización del listado
/// </summary>
async
Task
ExecuteRefreshQuestionListCommand
()
{
// Hace que el comando no se pueda ejecutar de nuevo
RefreshQuestionListCommand
.
ChangeCanExecute
();
// Realiza el proceso de actualización
await
FetchQuestionList
();
// Hace que el comando pueda volver a ejecutarse
RefreshQuestionListCommand
.
ChangeCanExecute
();
}
/// <summary>
/// Proceso de actualización del listado
/// </summary>
async
Task
FetchQuestionList
()
{
// Indicamos que estamos ocupados (provoca que aparezca el indicador de carga)
IsBusy
=
true
;
// Llamada al API para coger el listado (provoca que se actualize la vista del listado)
// Nota: Al obtener el listado, el controlador Rest del servidor no retorna el cuerpo de
// la notificación (campo Body)
try
{
QuestionList
=
new
ObservableRangeCollection
<
QuestionSpecialist
>(
await
App
.
API
.
RefreshListAsync
<
QuestionSpecialist
>());
}
catch
(
Exception
e
)
{
string
err
=
e
.
Message
;
}
// Indicamos que ya no estamos ocupados (provoca que desaparezca el indicador de carga)
IsBusy
=
false
;
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment