Commit dc40bd25 by gema

creación de una conversación nueva y respuesta en una conversación ya existente

parent 4c75320c
...@@ -2,15 +2,17 @@ ...@@ -2,15 +2,17 @@
{ {
using Newtonsoft.Json; using Newtonsoft.Json;
using System.Collections.Generic; using System.Collections.Generic;
using System;
[JsonObject(MemberSerialization.OptIn)] [JsonObject(MemberSerialization.OptIn)]
[DataPath("conversation")] [DataPath("conversation")]
public class Conversation : ObservableEntityData public class Conversation : ObservableEntityData
{ {
[JsonProperty("subject", Required = Required.Always)] /* [JsonProperty("subject", Required = Required.Always)]*/
[JsonProperty("subject")]
public string Subject { get; set; } public string Subject { get; set; }
[JsonProperty("created_at")] [JsonProperty("created_at")]
...@@ -22,8 +24,15 @@ ...@@ -22,8 +24,15 @@
[JsonProperty("messages")] [JsonProperty("messages")]
public IList<Message> Messages { get; set; } public IList<Message> Messages { get; set; }
[JsonProperty("message")]
public string Message { get; set; }
public Conversation() { } public Conversation() { }
/*public string ExcerptCompress => Excerpt == null ? "..." : Excerpt.Substring(0, Math.Min(80, Excerpt.Length)).Length < 80 ? Excerpt : Excerpt.Substring(0, Excerpt.Substring(0, 80).LastIndexOf(" ")) + ((Excerpt.Length > 80) ? "..." : "");*/ /*public string ExcerptCompress => Excerpt == null ? "..." : Excerpt.Substring(0, Math.Min(80, Excerpt.Length)).Length < 80 ? Excerpt : Excerpt.Substring(0, Excerpt.Substring(0, 80).LastIndexOf(" ")) + ((Excerpt.Length > 80) ? "..." : "");*/
} }
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
[DataPath("conversation")] [DataPath("conversation")]
public class Message : ObservableEntityData public class Message : ObservableEntityData
{ {
[JsonProperty("message", Required = Required.Always)] [JsonProperty("message")]
public string Text { get; set; } public string Text { get; set; }
[JsonProperty("read")] [JsonProperty("read")]
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)] [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
public class DataPathAttribute : Attribute public class DataPathAttribute : Attribute
{ {
public DataPathAttribute(string path) public DataPathAttribute(string path)
{ {
DataPath = path; DataPath = path;
} }
......
...@@ -136,6 +136,8 @@ namespace inutralia.API ...@@ -136,6 +136,8 @@ namespace inutralia.API
string dataPath = GetDataPath(item.GetType()); string dataPath = GetDataPath(item.GetType());
string fullPath = isNew ? dataPath : string.Format("{0}/{1}", dataPath, item.Id); string fullPath = isNew ? dataPath : string.Format("{0}/{1}", dataPath, item.Id);
// Crear uri a partir de la URL base y el path // Crear uri a partir de la URL base y el path
var uri = new Uri(string.Format(Constants.ApiUrlTemplate, fullPath)); var uri = new Uri(string.Format(Constants.ApiUrlTemplate, fullPath));
...@@ -168,8 +170,10 @@ namespace inutralia.API ...@@ -168,8 +170,10 @@ namespace inutralia.API
return item.Id; return item.Id;
} //endif } //endif
} }
catch (Exception) catch (Exception e)
{ } {
var error = e;
}
// Si llegamos aquí, es que la petición devolvió error // Si llegamos aquí, es que la petición devolvió error
return null; return null;
......
namespace inutralia.ViewModels
{
using inutralia.Models;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
public class CreateNutriQuestionViewModel : BaseNavigationViewModel
{
public CreateNutriQuestionViewModel()
{
Conversation = new Conversation();
}
public Conversation Conversation { get; private set; }
public async Task RefreshData()
{
if (Conversation == null)
return;
IsBusy = true;
if (await App.API.RefreshItemAsync(Conversation))
{
OnPropertyChanged("Conversation");
// Cambiar título
var Caca = Conversation.Subject;
var Caca2 = Conversation.Created_at;
var Caca3 = Conversation.State;
var caca4 = Conversation.Messages[0];
} //endif
IsBusy = false;
}
public async Task SaveData(string subjectValue, string messageValue)
{
IsBusy = true;
Conversation.Subject = subjectValue;
Conversation.Message = messageValue;
await App.API.UpdateItemAsync(Conversation, true);
IsBusy = false;
}
}
}
\ No newline at end of file
...@@ -14,8 +14,14 @@ ...@@ -14,8 +14,14 @@
Conversation.Messages = new Message[0]; Conversation.Messages = new Message[0];
} }
public DetailsNutriQuestionListViewModel() { Conversation = new Conversation(); }
public Conversation Conversation { get; private set; } public Conversation Conversation { get; private set; }
public async Task RefreshData() public async Task RefreshData()
{ {
if (Conversation == null) if (Conversation == null)
...@@ -33,5 +39,15 @@ ...@@ -33,5 +39,15 @@
IsBusy = false; IsBusy = false;
} }
public async Task saveData(string messageValue)
{
IsBusy = true;
Conversation.Message = messageValue;
await App.API.UpdateItemAsync(Conversation);
IsBusy = false;
}
} }
} }
\ No newline at end of file
...@@ -23,15 +23,17 @@ ...@@ -23,15 +23,17 @@
FontAttributes="Bold" /> FontAttributes="Bold" />
<Entry x:Name = "asunto" <Entry x:Name = "asunto"
Placeholder="Asunto" Placeholder="Asunto"
Margin="0,30,0,0"/> Margin="0,30,0,0"/>
<Editor Text="Consulta" <Entry
Placeholder="Consulta"
x:Name="consultaEditor" x:Name="consultaEditor"
HeightRequest="100" HeightRequest="100"
VerticalOptions="FillAndExpand" /> VerticalOptions="FillAndExpand" />
<Button Text="ENVIAR CONSULTA >" <Button Text="ENVIAR CONSULTA >"
Clicked="OnCreateButtonClicked"
HorizontalOptions="FillAndExpand" HorizontalOptions="FillAndExpand"
BackgroundColor="#333333" BackgroundColor="#333333"
TextColor="#ffffff" TextColor="#ffffff"
......
using System; 
using System.Collections.Generic; using inutralia.ViewModels;
using System.Linq; using System;
using System.Text; using Xamarin.Forms;
using System.Threading.Tasks; using System.Threading.Tasks;
using Xamarin.Forms;
using Xamarin.Forms.Xaml; using Xamarin.Forms.Xaml;
namespace inutralia.Views.NutriQuestion namespace inutralia.Views.NutriQuestion
{ {
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class CreateNutriQuestion : ContentPage public partial class CreateNutriQuestion : ContentPage
{ {
protected CreateNutriQuestionViewModel ViewModel => BindingContext as CreateNutriQuestionViewModel;
public CreateNutriQuestion() public CreateNutriQuestion()
{ {
InitializeComponent(); InitializeComponent();
/* if (consultaEditor.Text == null) BindingContext = new CreateNutriQuestionViewModel();
}
protected override async void OnAppearing()
{
base.OnAppearing();
}
async void OnCreateButtonClicked(object sender, EventArgs e)
{
try
{ {
consultaEditor.Placeholder = "Please work"; var subjectValue = asunto.Text;
}*/ var messageValue = consultaEditor.Text;
await ViewModel.SaveData(subjectValue, messageValue);
await DisplayAlert("Exito", "El mensaje se ha enviado correctamente.", "Entendido");
(App.Current.MainPage as RootPage).Navigate<HomeView>();
}
catch (Exception )
{
await DisplayAlert("Error", "Se ha producido un error. Por favor, intentelo más tarde", "Entendido");
}
} }
}
}
} }
\ No newline at end of file
...@@ -106,12 +106,14 @@ ...@@ -106,12 +106,14 @@
<StackLayout Grid.Row="2" Grid.Column="0" > <StackLayout Grid.Row="2" Grid.Column="0" >
<Editor Text="Escribe un mensaje..." <Entry
x:Name="consultaEditor" Placeholder="Escribe un mensaje.."
x:Name="messageEntry"
HeightRequest="45" HeightRequest="45"
VerticalOptions="FillAndExpand" /> VerticalOptions="FillAndExpand" />
<Button Text="ENVIAR >" <Button Text="ENVIAR >"
Clicked="OnSendButtonClicked"
HorizontalOptions="FillAndExpand" HorizontalOptions="FillAndExpand"
BackgroundColor="#333333" BackgroundColor="#333333"
TextColor="#ffffff" TextColor="#ffffff"
......
 
using inutralia.ViewModels; using inutralia.ViewModels;
using System;
using Xamarin.Forms; using Xamarin.Forms;
...@@ -24,6 +25,25 @@ namespace inutralia.Views.NutriQuestion ...@@ -24,6 +25,25 @@ namespace inutralia.Views.NutriQuestion
} }
async void OnSendButtonClicked(object sender, EventArgs e)
{
try
{
var messageValue = messageEntry.Text;
await ViewModel.saveData(messageValue);
await DisplayAlert("Exito", "El mensaje se ha enviado correctamente.", "Entendido");
(App.Current.MainPage as RootPage).Navigate<HomeView>();
}
catch (Exception)
{
await DisplayAlert("Error", "Se ha producido un error. Por favor, intentelo más tarde", "Entendido");
}
}
} }
} }
...@@ -54,6 +54,7 @@ ...@@ -54,6 +54,7 @@
<DesignTime>True</DesignTime> <DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon> <DependentUpon>Resources.resx</DependentUpon>
</Compile> </Compile>
<Compile Include="ViewModels\NutriQuestions\CreateNutriQuestionViewModel.cs" />
<Compile Include="ViewModels\NutriQuestions\DetailsNutriQuestionListViewModel.cs" /> <Compile Include="ViewModels\NutriQuestions\DetailsNutriQuestionListViewModel.cs" />
<Compile Include="ViewModels\NutriQuestions\NutriQuestionListViewModel.cs" /> <Compile Include="ViewModels\NutriQuestions\NutriQuestionListViewModel.cs" />
<Compile Include="ViewModels\Menus\CustomMenuViewModel.cs" /> <Compile Include="ViewModels\Menus\CustomMenuViewModel.cs" />
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment