WIP estimate

This commit is contained in:
2016-11-25 14:48:11 +01:00
parent 478149e383
commit 5d98c1d306
22 changed files with 407 additions and 52 deletions

View File

@ -43,6 +43,7 @@
<Compile Include="Attributes\CurrencyAttribute.cs" />
<Compile Include="Attributes\DisplayAttribute.cs" />
<Compile Include="Behaviors\EmailValidatorBehavior.cs" />
<Compile Include="Behaviors\IntegerEntryBehavior.cs" />
<Compile Include="Behaviors\MaxLengthValidator.cs" />
<Compile Include="Behaviors\DecimalValidatorBehavior.cs" />
<Compile Include="Behaviors\PickerBehavior.cs" />
@ -58,6 +59,15 @@
<Compile Include="Model\Social\Messaging\ChatStatus.cs" />
<Compile Include="Model\Social\Messaging\PrivateMessage.cs" />
<Compile Include="Model\UI\PageState.cs" />
<Compile Include="Pages\EstimatePages\EstimatesClientPage.xaml.cs">
<DependentUpon>EstimatesClientPage.xaml</DependentUpon>
</Compile>
<Compile Include="Pages\EstimatePages\EstimatesProviderPage.xaml.cs">
<DependentUpon>EstimatesProviderPage.xaml</DependentUpon>
</Compile>
<Compile Include="Pages\EstimatePages\ViewEstimatePage.xaml.cs">
<DependentUpon>ViewEstimatePage.xaml</DependentUpon>
</Compile>
<Compile Include="Pages\UserProfile\UserFiles.xaml.cs">
<DependentUpon>UserFiles.xaml</DependentUpon>
</Compile>
@ -79,7 +89,7 @@
<Compile Include="Pages\DocSigning.xaml.cs">
<DependentUpon>DocSigning.xaml</DependentUpon>
</Compile>
<Compile Include="ViewModels\Signing\EstimateSignaturePad.cs" />
<Compile Include="ViewModels\Signing\DocSigningViewModel.cs" />
<Compile Include="ViewModels\Signing\SignaturePadConfigViewModel.cs" />
<Compile Include="ViewModels\UserProfile\UserProfileViewModel.cs" />
<Compile Include="ViewModels\UserProfile\DirectoryInfoViewModel.cs" />
@ -110,16 +120,16 @@
<Compile Include="Interfaces\IBillingLine.cs" />
<Compile Include="Interfaces\IEstimate.cs" />
<Compile Include="Pages\BlogPages\BlogPage.cs" />
<Compile Include="Pages\Estimate\BookQueriesPage.xaml.cs">
<Compile Include="Pages\EstimatePages\BookQueriesPage.xaml.cs">
<DependentUpon>BookQueriesPage.xaml</DependentUpon>
</Compile>
<Compile Include="Pages\Estimate\BookQueryPage.xaml.cs">
<Compile Include="Pages\EstimatePages\BookQueryPage.xaml.cs">
<DependentUpon>BookQueryPage.xaml</DependentUpon>
</Compile>
<Compile Include="Pages\ChatPage.xaml.cs">
<DependentUpon>ChatPage.xaml</DependentUpon>
</Compile>
<Compile Include="Pages\Estimate\EditBillingLinePage.xaml.cs">
<Compile Include="Pages\EstimatePages\EditBillingLinePage.xaml.cs">
<DependentUpon>EditBillingLinePage.xaml</DependentUpon>
</Compile>
<Compile Include="Pages\UserProfile\DashboardPage.xaml.cs">
@ -170,7 +180,7 @@
<Compile Include="Model\Auth\Tokens.cs" />
<Compile Include="Model\Auth\User.cs" />
<Compile Include="Model\Workflow\Estimate.cs" />
<Compile Include="Pages\Estimate\EditEstimatePage.xaml.cs">
<Compile Include="Pages\EstimatePages\EditEstimatePage.xaml.cs">
<DependentUpon>EditEstimatePage.xaml</DependentUpon>
</Compile>
<Compile Include="Pages\Oooops\HomePage.xaml.cs">
@ -336,7 +346,7 @@
</Reference>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Pages\Estimate\BookQueryPage.xaml">
<EmbeddedResource Include="Pages\EstimatePages\BookQueryPage.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
<SubType>Designer</SubType>
</EmbeddedResource>
@ -348,19 +358,19 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Pages\Estimate\EditEstimatePage.xaml">
<EmbeddedResource Include="Pages\EstimatePages\EditEstimatePage.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Pages\Estimate\BookQueriesPage.xaml">
<EmbeddedResource Include="Pages\EstimatePages\BookQueriesPage.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Pages\Estimate\EditBillingLinePage.xaml">
<EmbeddedResource Include="Pages\EstimatePages\EditBillingLinePage.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
<SubType>Designer</SubType>
</EmbeddedResource>
@ -450,6 +460,24 @@
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Pages\EstimatePages\EstimatesProviderPage.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Pages\EstimatePages\EstimatesClientPage.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Pages\EstimatePages\ViewEstimatePage.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
<Import Project="..\..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets" Condition="Exists('..\..\packages\Xamarin.Forms.2.3.2.127\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">

View File

@ -1,6 +1,22 @@
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:signature="clr-namespace:SignaturePad.Forms;assembly=SignaturePad.Forms"
xmlns:views="clr-namespace:BookAStar.Views;assembly=BookAStar"
x:Class="BookAStar.ViewModels.Signing.DocSigning">
<Label Text="{Binding MainText}" VerticalOptions="Center" HorizontalOptions="Center" />
<StackLayout>
<views:MarkdownView x:Name="mdView"
Editable="False"
HorizontalOptions="FillAndExpand"
Markdown="{Binding Document}"
VerticalOptions="Start" />
<signature:SignaturePadView x:Name="padView"
HeightRequest="150" WidthRequest="240"
BackgroundColor="White"
CaptionText="Caption This" CaptionTextColor="Black"
ClearText="Clear Me!" ClearTextColor="Red"
PromptText="Prompt Here" PromptTextColor="Red"
SignatureLineColor="Aqua" StrokeColor="Black" StrokeWidth="2" />
<Button Clicked="OnGetStats" Text="Get Signature Stats" />
</StackLayout>
</ContentPage>

View File

@ -1,4 +1,5 @@
using System;
using SignaturePad.Forms;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@ -14,5 +15,45 @@ namespace BookAStar.ViewModels.Signing
{
InitializeComponent();
}
private async void OnGetStats(object sender, EventArgs e)
{
var points = padView.Points.ToArray();
var image = await padView.GetImageStreamAsync(SignatureImageFormat.Png);
var pointCount = points.Count();
var imageSize = image.Length / 1000;
var linesCount = points.Count(p => p == Point.Zero) + (points.Length > 0 ? 1 : 0);
image.Dispose();
await DisplayAlert("Stats", $"The signature has {linesCount} lines or {pointCount} points, and is {imageSize:#,###.0}KB (in memory) when saved as a PNG.", "Cool");
}
private async void OnChangeTheme(object sender, EventArgs e)
{
var action = await DisplayActionSheet("Change Theme", "Cancel", null, "White", "Black", "Aqua");
switch (action)
{
case "White":
padView.BackgroundColor = Color.White;
padView.StrokeColor = Color.Black;
padView.ClearTextColor = Color.Black;
padView.ClearText = "Clear Markers";
break;
case "Black":
padView.BackgroundColor = Color.Black;
padView.StrokeColor = Color.White;
padView.ClearTextColor = Color.White;
padView.ClearText = "Clear Chalk";
break;
case "Aqua":
padView.BackgroundColor = Color.Aqua;
padView.StrokeColor = Color.Red;
padView.ClearTextColor = Color.Black;
padView.ClearText = "Clear The Aqua";
break;
}
}
}
}

View File

@ -25,7 +25,8 @@
</Style>
</ResourceDictionary>
</ContentPage.Resources>
<ContentPage.Content>
<ScrollView>
<StackLayout Padding="10,10,10,10" x:Name="mainLayout">
<ListView RefreshCommand="{Binding RefreshQueries}" IsPullToRefreshEnabled="True"
@ -48,7 +49,7 @@
</StackLayout>
<StackLayout Orientation="Vertical" HorizontalOptions="FillAndExpand">
<Label LineBreakMode="WordWrap" Text="{Binding Location.Address}"/>
<Label Text="{Binding Previsionnal}"/>
<Label Text="{Binding Previsionnal}" />
<Label Text="{Binding Id}" HorizontalTextAlignment="End"/>
</StackLayout>
</StackLayout>
@ -59,5 +60,6 @@
</ListView>
</StackLayout>
</ScrollView>
</ContentPage.Content>
</ContentPage>

View File

@ -27,7 +27,13 @@
</StackLayout>
<StackLayout Orientation="Vertical" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" >
<maps:Map x:Name="map" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"></maps:Map>
<Button Text="{Binding EditEstimateButtonText}" Clicked="OnEditEstimate" VerticalOptions="End"/>
<StackLayout Orientation="Horizontal">
<Button Text="{x:Static local:Strings.ViewEstimate}"
BorderRadius="10" BorderWidth="2" BorderColor="Aqua" x:Name ="btn"
IsEnabled="{Binding EstimationDone}"
Clicked="OnViewEstimate" Image="exclam.png"/>
<Button Text="{Binding EditEstimateButtonText}" Clicked="OnEditEstimate" />
</StackLayout>
</StackLayout>
</StackLayout>
</ContentPage>

View File

@ -1,13 +1,14 @@
using System;
using System.Linq;
using Xamarin.Forms;
using Xamarin.Forms.Maps;
namespace BookAStar.Pages
{
using Data;
using EstimatePages;
using Model;
using Model.Workflow;
using System.Linq;
using ViewModels.EstimateAndBilling;
public partial class BookQueryPage : ContentPage
@ -71,23 +72,31 @@ namespace BookAStar.Pages
{
DataManager.Current.Contacts.Merge(BookQuery.Client);
DataManager.Current.Contacts.SaveEntity();
estimateToEdit = new Estimate()
estimateToEdit = new Estimate
{
ClientId = BookQuery.Client.UserId,
CommandId = BookQuery.Id,
OwnerId = MainSettings.CurrentUser.Id,
Id = 0,
Description = "# **Hello Estimate!**"
Id = 0
};
editEstimateViewModel = new EditEstimateViewModel(estimateToEdit, LocalState.New);
editEstimateViewModel = new EditEstimateViewModel(estimateToEdit);
}
else
editEstimateViewModel = new EditEstimateViewModel(estimateToEdit, LocalState.UpToDate);
editEstimateViewModel = new EditEstimateViewModel(estimateToEdit);
DataManager.Current.EstimationCache.Add(editEstimateViewModel);
}
App.NavigationService.NavigateTo<EditEstimatePage>(true,
editEstimateViewModel);
}
private void OnViewEstimate(object sender, EventArgs ev)
{
var bookQueryViewModel = (BookQueryViewModel) BindingContext;
App.NavigationService.NavigateTo<ViewEstimatePage>(true,
new EditEstimateViewModel(bookQueryViewModel.Estimate));
}
protected override void OnSizeAllocated(double width, double height)

View File

@ -50,9 +50,6 @@
<behaviors:EditorMaxLengthValidator x:Name="descriptionValidator" MaxLength="512" />
</Editor.Behaviors>
</Editor>
<Image HorizontalOptions="End" Style="{Binding Source={x:Reference descriptionValidator},
Path=IsValid,
Converter={StaticResource boolToStyleImage}}" />
</StackLayout>
<Label Text="Durée de la prestation"
@ -77,8 +74,19 @@
</StackLayout>
<Label Text="Quantité facturée" Style="{StaticResource InputLabelStyle}"></Label>
<StackLayout Orientation="Horizontal">
<Entry Text="{Binding Count, Mode=TwoWay}" Placeholder="Quantité" Keyboard="Numeric"
Style="{StaticResource BigEntry}"/>
Style="{StaticResource BigEntry}">
<Entry.Behaviors>
<behaviors:IntegerEntryBehavior x:Name="countValidator" Min="0" Max="10" />
</Entry.Behaviors>
</Entry>
<Image x:Name="countSuccessErrorImage"
Style="{Binding Source={x:Reference countValidator},
Path=IsValid,
Converter={StaticResource boolToStyleImage}}" />
</StackLayout>
<Label Text="Prix unitaire" Style="{StaticResource InputLabelStyle}"></Label>
<StackLayout Orientation="Horizontal">
<Entry Text="{Binding UnitaryCostText, Mode=TwoWay}" Placeholder="Prix"

View File

@ -15,6 +15,7 @@
</Style>
</ResourceDictionary>
</ContentPage.Resources>
<ContentPage.Content>
<ScrollView>
<StackLayout Padding="10,10,10,10" x:Name="mainLayout">
<Grid MinimumHeightRequest="12">
@ -77,4 +78,5 @@
</StackLayout>
</StackLayout>
</ScrollView>
</ContentPage.Content>
</ContentPage>

View File

@ -50,8 +50,7 @@ namespace BookAStar.Pages
DataManager.Current.EstimationCache.SaveEntity();
})};
App.NavigationService.NavigateTo<EditBillingLinePage>(
true,
new object[] { lineView } );
true, lineView );
}
protected void OnEditLine(object sender, ItemTappedEventArgs e)
{
@ -65,8 +64,7 @@ namespace BookAStar.Pages
};
lineView.PropertyChanged += LineView_PropertyChanged;
App.NavigationService.NavigateTo<EditBillingLinePage>(
true,
new object[] { lineView });
true, lineView );
}
private void LineView_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="BookAStar.Pages.EstimatesClientPage">
<Label Text="{Binding MainText}" VerticalOptions="Center" HorizontalOptions="Center" />
</ContentPage>

View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace BookAStar.Pages
{
public partial class EstimatesClientPage : ContentPage
{
public EstimatesClientPage()
{
InitializeComponent();
}
}
}

View File

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="BookAStar.Pages.EstimatesProviderPage">
<ScrollView>
<StackLayout Padding="10,10,10,10" x:Name="mainLayout">
<ListView RefreshCommand="{Binding RefreshCommand}" IsPullToRefreshEnabled="True"
ItemsSource="{Binding Estimates}" x:Name="estimates" ItemTapped="OnViewDetail" HasUnevenRows="true" RowHeight="80">
<ListView.ItemTemplate HeightRequest="80" VerticalOptions="StartAndExpand">
<DataTemplate>
<ViewCell>
<ViewCell.View>
<StackLayout Orientation="Horizontal" Padding="10,10,10,10" VerticalOptions="StartAndExpand">
<StackLayout Orientation="Vertical"
HeightRequest="80" VerticalOptions="StartAndExpand">
<StackLayout Orientation="Vertical" >
<Image Source="{Binding Client.Avatar}" />
<Label Text="{Binding Client.UserName}"
Style="{StaticResource labelStyle}"></Label>
</StackLayout>
<Label LineBreakMode="WordWrap" Text="{Binding EventDate, StringFormat='{0:dddd d MMMM à HH:mm}'}" FontSize="12" FontFamily="Italic"/>
</StackLayout>
<StackLayout Orientation="Vertical" HorizontalOptions="FillAndExpand">
<Label LineBreakMode="WordWrap" Text="{Binding Location.Address}"/>
<Label Text="{Binding Previsionnal}"/>
<Label Text="{Binding Id}" HorizontalTextAlignment="End"/>
</StackLayout>
</StackLayout>
</ViewCell.View>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</ScrollView>
</ContentPage>

View File

@ -0,0 +1,29 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace BookAStar.Pages
{
using Model.Workflow;
using ViewModels.EstimateAndBilling;
public partial class EstimatesProviderPage : ContentPage
{
public EstimatesProviderPage()
{
InitializeComponent();
}
private void OnViewDetail(object sender, ItemTappedEventArgs e)
{
Estimate data = e.Item as Estimate;
App.NavigationService.NavigateTo<EditEstimatePage>(
true,
new EditEstimateViewModel(data));
}
}
}

View File

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="BookAStar.Pages.EstimatePages.ViewEstimatePage"
xmlns:views="clr-namespace:BookAStar.Views;assembly=BookAStar"
xmlns:local="clr-namespace:BookAStar;assembly=BookAStar"
Style="{StaticResource PageStyle}">
<ContentPage.Resources>
<ResourceDictionary>
<Style TargetType="Label">
<Setter Property="Style" Value="{StaticResource ContentLabelStyle}" />
</Style>
<Style TargetType="Button">
<Setter Property="Style" Value="{StaticResource ButtonStyle}" />
</Style>
</ResourceDictionary>
</ContentPage.Resources>
<ContentPage.Content>
<ScrollView>
<StackLayout Padding="10,10,10,10" x:Name="mainLayout">
<Grid MinimumHeightRequest="12">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Text="{Binding Client.UserName}" ></Label>
<Label Grid.Row="0" Grid.Column="1" Text="{Binding Query.Location.Address}" ></Label>
<Label Grid.Row="0" Grid.Column="2" Text="{Binding Query.EventDate, StringFormat='{0:dddd d MMMM yyyy à hh:mm}'}" ></Label>
</Grid>
<Label Text="{Binding Title}" />
<Label Text="{Binding Description}" />
<views:MarkdownView x:Name="mdview"
HorizontalOptions="FillAndExpand"
Markdown="{Binding Description}"
/>
<ListView x:Name="billListView" ItemsSource="{Binding Bill}"
MinimumHeightRequest="40" HasUnevenRows="true" VerticalOptions="FillAndExpand"
HeightRequest="40" >
<ListView.ItemTemplate>
<DataTemplate >
<ViewCell>
<ViewCell.View>
<Grid MinimumHeightRequest="12">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="30" />
<ColumnDefinition Width="90" />
</Grid.ColumnDefinitions>
<Label Text="{Binding Description}"
Grid.Row="0" Grid.Column="0" ></Label>
<Label Text="{Binding Duration, StringFormat=\{0\}}"
Grid.Row="0" Grid.Column="1" ></Label>
<Label Text="{Binding Count}"
Grid.Row="0" Grid.Column="2" ></Label>
<Label Text="{Binding UnitaryCost}"
Grid.Row="0" Grid.Column="3"
FontFamily="Monospace"></Label>
</Grid>
</ViewCell.View>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<Label FormattedText="{Binding FormattedTotal}"/>
</StackLayout>
</ScrollView>
</ContentPage.Content>
</ContentPage>

View File

@ -0,0 +1,25 @@

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace BookAStar.Pages.EstimatePages
{
using ViewModels.EstimateAndBilling;
public partial class ViewEstimatePage : ContentPage
{
public ViewEstimatePage(EditEstimateViewModel model)
{
InitializeComponent();
billListView.ItemSelected += (sender, e) => {
((ListView)sender).SelectedItem = null;
};
BindingContext = model;
}
}
}

View File

@ -61,6 +61,24 @@ namespace BookAStar {
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Faire un devis.
/// </summary>
public static string DoEstimate {
get {
return ResourceManager.GetString("DoEstimate", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Editer le devis.
/// </summary>
public static string EditEstimate {
get {
return ResourceManager.GetString("EditEstimate", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Star.
/// </summary>
@ -97,15 +115,6 @@ namespace BookAStar {
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à sc.
/// </summary>
public static string String1 {
get {
return ResourceManager.GetString("String1", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Incontournable.
/// </summary>
@ -123,5 +132,14 @@ namespace BookAStar {
return ResourceManager.GetString("TwoStars", resourceCulture);
}
}
/// <summary>
/// Recherche une chaîne localisée semblable à Voir le devis.
/// </summary>
public static string ViewEstimate {
get {
return ResourceManager.GetString("ViewEstimate", resourceCulture);
}
}
}
}

View File

@ -117,6 +117,12 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="DoEstimate" xml:space="preserve">
<value>Faire un devis</value>
</data>
<data name="EditEstimate" xml:space="preserve">
<value>Editer le devis</value>
</data>
<data name="FiveStars" xml:space="preserve">
<value>Star</value>
<comment>Da star, da one</comment>
@ -131,13 +137,13 @@
<data name="OneStar" xml:space="preserve">
<value>Étoile montante</value>
</data>
<data name="String1" xml:space="preserve">
<value>sc</value>
</data>
<data name="ThreeStars" xml:space="preserve">
<value>Incontournable</value>
</data>
<data name="TwoStars" xml:space="preserve">
<value>À ne manquer sous aucun prétexte</value>
</data>
<data name="ViewEstimate" xml:space="preserve">
<value>Voir le devis</value>
</data>
</root>

View File

@ -9,11 +9,14 @@ namespace BookAStar.ViewModels.EstimateAndBilling
using Interfaces;
using Model;
using Model.Social;
using Model.Workflow;
using System.Linq;
class BookQueryViewModel : ViewModel, IBookQueryData
{
public BookQueryViewModel()
{
}
public BookQueryViewModel(BookQueryData data)
{
@ -44,11 +47,28 @@ namespace BookAStar.ViewModels.EstimateAndBilling
return DataManager.Current.EstimationCache.LocalGet(this.Id);
}
}
public Estimate Estimate { get
{
return DataManager.Current.Estimates.FirstOrDefault(
e=>e.Query.Id == Id
);
} }
public bool EstimationDone
{
get
{
return Estimate != null;
}
}
public string EditEstimateButtonText
{
get
{
return DraftEstimate != null ? "Editer le devis" : "Faire un devis" ;
return DraftEstimate != null ?
Strings.EditEstimate : Strings.DoEstimate;
}
}
}

View File

@ -23,10 +23,9 @@ namespace BookAStar.ViewModels.EstimateAndBilling
/// </summary>
/// <param name="data"></param>
/// <param name="localState"></param>
public EditEstimateViewModel(Estimate data, LocalState localState )
public EditEstimateViewModel(Estimate data)
{
Data = data;
State = localState;
}
private void Bill_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
@ -65,19 +64,20 @@ namespace BookAStar.ViewModels.EstimateAndBilling
}
string newDesc;
[JsonIgnore]
private string description;
public string Description
{
get
{
return Data.Description;
return description;
}
set
{
SetProperty<string>(ref newDesc, value, "Description");
Data.Description = newDesc;
SetProperty<string>(ref description, value);
Data.Description = description;
}
}
@ -87,7 +87,7 @@ namespace BookAStar.ViewModels.EstimateAndBilling
{
get
{
return Data.Title;
return title;
}
set

View File

@ -7,8 +7,11 @@ using XLabs.Forms.Mvvm;
namespace BookAStar.ViewModels.Signing
{
class EstimateSignaturePad: ViewModel
class DocSigningViewModel: ViewModel
{
/// <summary>
/// The doc to sign, in Markdown format
/// </summary>
public string Document { get; set; }
}
}