display the /HairCut/Brush profile

This commit is contained in:
2018-06-15 15:44:21 +02:00
parent cdc38236e0
commit e85b012184
27 changed files with 516 additions and 364 deletions

View File

@ -5,6 +5,7 @@ using Yavsc.Helpers;
using Yavsc.Models; using Yavsc.Models;
using Yavsc.Models.Workflow; using Yavsc.Models.Workflow;
using Yavsc.Services; using Yavsc.Services;
using Yavsc.ViewModels.FrontOffice;
namespace Yavsc.ApiControllers namespace Yavsc.ApiControllers
{ {
@ -12,18 +13,21 @@ namespace Yavsc.ApiControllers
public class FrontOfficeApiController: Controller public class FrontOfficeApiController: Controller
{ {
ApplicationDbContext dbContext; ApplicationDbContext dbContext;
public FrontOfficeApiController(ApplicationDbContext context) private IBillingService billing;
public FrontOfficeApiController(ApplicationDbContext context, IBillingService billing)
{ {
dbContext = context; dbContext = context;
this.billing = billing;
} }
[HttpGet,Route("profiles/{actCode}")] [HttpGet("profiles/{actCode}")]
IEnumerable<PerformerProfile> Profiles (string actCode) IEnumerable<PerformerProfileViewModel> Profiles (string actCode)
{ {
return dbContext.ListPerformers(actCode); return dbContext.ListPerformers(billing, actCode);
} }
[HttpPost,Route("query/reject")] [HttpPost("query/reject")]
public IActionResult RejectQuery (string billingCode, long queryId) public IActionResult RejectQuery (string billingCode, long queryId)
{ {
if (billingCode==null) return HttpBadRequest("billingCode"); if (billingCode==null) return HttpBadRequest("billingCode");

View File

@ -9,15 +9,19 @@ namespace Yavsc.Controllers
{ {
using Models; using Models;
using Yavsc.Helpers; using Yavsc.Helpers;
using Yavsc.Services;
[Produces("application/json")] [Produces("application/json")]
[Route("api/performers")] [Route("api/performers")]
public class PerformersApiController : Controller public class PerformersApiController : Controller
{ {
ApplicationDbContext dbContext; ApplicationDbContext dbContext;
public PerformersApiController(ApplicationDbContext context) private IBillingService billing;
public PerformersApiController(ApplicationDbContext context, IBillingService billing)
{ {
dbContext = context; dbContext = context;
this.billing = billing;
} }
/// <summary> /// <summary>
@ -56,7 +60,7 @@ namespace Yavsc.Controllers
[HttpGet("doing/{id}"),AllowAnonymous] [HttpGet("doing/{id}"),AllowAnonymous]
public IActionResult ListPerformers(string id) public IActionResult ListPerformers(string id)
{ {
return Ok(dbContext.ListPerformers(id)); return Ok(dbContext.ListPerformers(billing, id));
} }
} }
} }

View File

@ -0,0 +1 @@
{"access_token":"ya29.GmnbBd3zsDsLPjI-ZkGhHLRiXI14NeNx7CJ5_XMlzu_1qOaLsrL-m3VWbKopO19yrnwK9z8CA6tv2QNxR3dkAU3Fsb29j6vcPsX3R7VNElHLCiwBF4w9jeNsA7fgw-0ydDjc3X78Oh_xlfM","token_type":"Bearer","expires_in":3600,"Issued":"2018-06-15T11:18:16.208+02:00","IssuedUtc":"2018-06-15T11:18:16.208+02:00"}

View File

@ -0,0 +1 @@
{"access_token":"ya29.GmnbBfcZapScUHU2T2Bb2c8t5D4uUbsfrFRXxe05zYQTG22BmnHjeU33QeqJFSPxo8H5fk0EuN2YrhwZxa0FRjkdhOHOTtCwqUubfdN5tfIpXci3PKBBe9kAEI5LlLDxRMprak03VCyDwfg","token_type":"Bearer","expires_in":3599,"Issued":"2018-06-15T15:05:41.809+02:00","IssuedUtc":"2018-06-15T15:05:41.809+02:00"}

View File

@ -125,7 +125,7 @@ namespace Yavsc.Controllers
}; };
model.HaveProfessionalSettings = _dbContext.Performers.Any(x => x.PerformerId == user.Id); model.HaveProfessionalSettings = _dbContext.Performers.Any(x => x.PerformerId == user.Id);
var usrActs = _dbContext.UserActivities.Include(a=>a.Does).Where(a=> a.UserId == user.Id).ToArray(); var usrActs = _dbContext.UserActivities.Include(a=>a.Does).Where(a=> a.UserId == user.Id).ToArray();
// TODO remember me who this magical a.Settings is built
var usrActToSet = usrActs.Where( a => ( a.Settings == null && a.Does.SettingsClassName != null )).ToArray(); var usrActToSet = usrActs.Where( a => ( a.Settings == null && a.Does.SettingsClassName != null )).ToArray();
model.HaveActivityToConfigure = usrActToSet .Count()>0; model.HaveActivityToConfigure = usrActToSet .Count()>0;
model.Activity = _dbContext.UserActivities.Include(a=>a.Does).Where(u=>u.UserId == user.Id).ToList(); model.Activity = _dbContext.UserActivities.Include(a=>a.Does).Where(u=>u.UserId == user.Id).ToList();

View File

@ -68,7 +68,6 @@ namespace Yavsc.Controllers
Settings = settings, Settings = settings,
NeedsSettings = hasConfigurableSettings NeedsSettings = hasConfigurableSettings
}; };
logger.LogInformation(JsonConvert.SerializeObject(gift.Settings));
return View (gift); return View (gift);
} }

View File

@ -24,8 +24,11 @@ namespace Yavsc.Controllers
ILogger _logger; ILogger _logger;
IStringLocalizer _SR; IStringLocalizer _SR;
private IBillingService _billing;
public FrontOfficeController(ApplicationDbContext context, public FrontOfficeController(ApplicationDbContext context,
UserManager<ApplicationUser> userManager, UserManager<ApplicationUser> userManager,
IBillingService billing,
ILoggerFactory loggerFactory, ILoggerFactory loggerFactory,
IStringLocalizer<Yavsc.Resources.YavscLocalisation> SR) IStringLocalizer<Yavsc.Resources.YavscLocalisation> SR)
{ {
@ -33,6 +36,7 @@ namespace Yavsc.Controllers
_userManager = userManager; _userManager = userManager;
_logger = loggerFactory.CreateLogger<FrontOfficeController>(); _logger = loggerFactory.CreateLogger<FrontOfficeController>();
_SR = SR; _SR = SR;
_billing = billing;
} }
public ActionResult Index() public ActionResult Index()
{ {
@ -61,7 +65,7 @@ namespace Yavsc.Controllers
throw new NotImplementedException("No Activity code"); throw new NotImplementedException("No Activity code");
} }
ViewBag.Activity = _context.Activities.FirstOrDefault(a => a.Code == id); ViewBag.Activity = _context.Activities.FirstOrDefault(a => a.Code == id);
var result = _context.ListPerformers(id); var result = _context.ListPerformers(_billing, id);
return View(result); return View(result);
} }
[AllowAnonymous] [AllowAnonymous]
@ -72,7 +76,7 @@ namespace Yavsc.Controllers
throw new NotImplementedException("No Activity code"); throw new NotImplementedException("No Activity code");
} }
ViewBag.Activity = _context.Activities.FirstOrDefault(a => a.Code == id); ViewBag.Activity = _context.Activities.FirstOrDefault(a => a.Code == id);
var result = _context.ListPerformers(id); var result = _context.ListPerformers(_billing, id);
return View(result); return View(result);
} }

View File

@ -7,16 +7,32 @@ namespace Yavsc.Helpers
using Microsoft.Data.Entity; using Microsoft.Data.Entity;
using Models.Workflow; using Models.Workflow;
using Yavsc.Models; using Yavsc.Models;
using Yavsc.Services;
using Yavsc.ViewModels.FrontOffice;
public static class WorkflowHelpers public static class WorkflowHelpers
{ {
public static List<PerformerProfile> ListPerformers(this ApplicationDbContext context, string actCode) public static List<PerformerProfileViewModel> ListPerformers(this ApplicationDbContext context,
IBillingService billing,
string actCode)
{ {
return context.Performers var settings = billing.GetPerformersSettingsAsync(actCode).Result?.ToArray();
var actors = context.Performers
.Include(p=>p.Activity) .Include(p=>p.Activity)
.Include(p=>p.Performer) .Include(p=>p.Performer)
.Include(p=>p.Performer.Posts) .Include(p=>p.Performer.Posts)
.Include(p=>p.Performer.Devices) .Include(p=>p.Performer.Devices)
.Where(p => p.Active && p.Activity.Any(u=>u.DoesCode==actCode)).OrderBy( x => x.Rate ).ToList(); .Where(p => p.Active && p.Activity.Any(u=>u.DoesCode==actCode)).OrderBy( x => x.Rate )
.ToArray();
List<PerformerProfileViewModel> result = new List<PerformerProfileViewModel> ();
foreach (var perfer in actors)
{
var view = new PerformerProfileViewModel(perfer, actCode, settings?.FirstOrDefault(s => s.UserId == perfer.PerformerId));
result.Add(view);
}
return result;
} }
} }

View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<!--
route name for the api controller used to tag the 'BlogPost' entity
-->
<data name="PerformerId"><value>Identifiant prestataire</value></data>
</root>

View File

@ -45,17 +45,12 @@ namespace Yavsc.Services
public async Task<IQueryable<ISpecializationSettings>> GetPerformersSettingsAsync(string activityCode) public async Task<IQueryable<ISpecializationSettings>> GetPerformersSettingsAsync(string activityCode)
{ {
logger.LogDebug("searching for "+activityCode);
var activity = await DbContext.Activities.SingleAsync(a=>a.Code == activityCode); var activity = await DbContext.Activities.SingleAsync(a=>a.Code == activityCode);
logger.LogDebug(JsonConvert.SerializeObject(activity));
if (activity.SettingsClassName==null) return null; if (activity.SettingsClassName==null) return null;
var dbSetPropInfo = UserSettings.SingleOrDefault(s => s.PropertyType.GenericTypeArguments[0].FullName == activity.SettingsClassName); var dbSetPropInfo = UserSettings.SingleOrDefault(s => s.PropertyType.GenericTypeArguments[0].FullName == activity.SettingsClassName);
if (dbSetPropInfo == null) return null; if (dbSetPropInfo == null) return null;
// var settingType = dbSetPropInfo.PropertyType;
// var dbSetType = typeof(DbSet<>).MakeGenericType(new Type[] { settingType } );
// avec une info method Remove et Update, ça le ferait ...
return (IQueryable<ISpecializationSettings>) dbSetPropInfo.GetValue(DbContext); return (IQueryable<ISpecializationSettings>) dbSetPropInfo.GetValue(DbContext);
} }

View File

@ -0,0 +1,40 @@
using System;
using System.Linq;
using Yavsc.Models;
using Yavsc.Models.Workflow;
namespace Yavsc.ViewModels.FrontOffice
{
public class PerformerProfileViewModel
{
public string UserName { get; set; }
public string PerformerId { get; set; }
public bool Active { get; set; }
public bool AcceptNotifications { get; set; }
public bool AcceptPublicContact { get; set; }
public UserActivity Context { get; set; }
public object Settings { get; set; }
public UserActivity[] Extra { get; set; }
public string WebSite { get; set; }
public string SettingsClassName { get; set; }
public PerformerProfileViewModel(PerformerProfile profile, string activityCode, object settings)
{
UserName = profile.Performer.UserName;
PerformerId = profile.PerformerId;
Active = profile.Active;
AcceptNotifications = profile.AcceptNotifications;
AcceptPublicContact = profile.AcceptPublicContact;
Context = profile.Activity.FirstOrDefault(a => a.DoesCode == activityCode);
SettingsClassName = Context.Does.SettingsClassName;
Settings = settings;
WebSite = profile.WebSite;
Extra = profile.Activity.Where(a => a.DoesCode != activityCode).ToArray();
}
}
}

View File

@ -9,332 +9,8 @@
<hr /> <hr />
@if (Model!=null) { @if (Model!=null) {
<fieldset> @Html.DisplayFor(model => model)
<legend>Disponibilités</legend>
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.Schedule)
</dt>
<dd>
@Html.DisplayFor(model => model.Schedule)
</dd>
<dt>
@Html.DisplayNameFor(model => model.ActionDistance)
</dt>
<dd>
@Html.DisplayFor(model => model.ActionDistance)
</dd>
</dl>
</fieldset>
<fieldset>
<legend>Tarifs divers</legend>
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.ShampooPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.ShampooPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.CarePrice)
</dt>
<dd>
@Html.DisplayFor(model => model.CarePrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.FlatFeeDiscount)
</dt>
<dd>
@Html.DisplayFor(model => model.FlatFeeDiscount)
</dd>
</dl>
</fieldset>
<fieldset>
<legend>Tarifs balayages</legend>
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.LongBalayagePrice)
</dt>
<dd>
@Html.DisplayFor(model => model.LongBalayagePrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.HalfBalayagePrice)
</dt>
<dd>
@Html.DisplayFor(model => model.HalfBalayagePrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.ShortBalayagePrice)
</dt>
<dd>
@Html.DisplayFor(model => model.ShortBalayagePrice)
</dd>
</dl>
</fieldset>
<fieldset>
<legend>Tarifs défrisage</legend>
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.HalfDefrisPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.HalfDefrisPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.LongDefrisPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.LongDefrisPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.ShortDefrisPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.ShortDefrisPrice)
</dd>
</dl>
</fieldset>
<fieldset>
<legend>Tarifs mèches</legend>
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.HalfMechPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.HalfMechPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.LongMechPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.LongMechPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.ShortMechPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.ShortMechPrice)
</dd>
</dl>
</fieldset>
<fieldset>
<legend>Tarifs coupes</legend>
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.WomenHalfCutPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.WomenHalfCutPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.WomenLongCutPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.WomenLongCutPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.WomenShortCutPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.WomenShortCutPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.ManCutPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.ManCutPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.KidCutPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.KidCutPrice)
</dd>
</dl>
</fieldset>
<fieldset>
<legend>Tarifs couleurs</legend>
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.LongColorPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.LongColorPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.HalfColorPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.HalfColorPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.ShortColorPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.ShortColorPrice)
</dd>
</dl>
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.ShortMultiColorPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.ShortMultiColorPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.HalfMultiColorPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.HalfMultiColorPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.LongMultiColorPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.LongMultiColorPrice)
</dd>
</dl>
</fieldset>
<fieldset>
<legend>Tarifs burshing</legend>
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.LongBrushingPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.LongBrushingPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.HalfBrushingPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.HalfBrushingPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.ShortBrushingPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.ShortBrushingPrice)
</dd>
</dl>
</fieldset>
<fieldset>
<legend>Tarifs permanentes</legend>
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.LongPermanentPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.LongPermanentPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.HalfPermanentPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.HalfPermanentPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.ShortPermanentPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.ShortPermanentPrice)
</dd>
</dl>
</fieldset>
<fieldset>
<legend>Tarifs mise en plis</legend>
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.LongFoldingPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.LongFoldingPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.HalfFoldingPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.HalfFoldingPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.ShortFoldingPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.ShortFoldingPrice)
</dd>
</dl>
</fieldset>
<fieldset>
<legend>Spécialités homme</legend>
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.ManBrushPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.ManBrushPrice)
</dd>
</dl>
</fieldset>
<p> <p>
<a asp-action="Edit" >@SR["Edit"]</a> <a asp-action="Edit" >@SR["Edit"]</a>
<a asp-action="Delete" asp-route-id="@Model.UserId">@SR["Delete"]</a> <a asp-action="Delete" asp-route-id="@Model.UserId">@SR["Delete"]</a>

View File

@ -1,4 +1,4 @@
@model IEnumerable<PerformerProfile> @model IEnumerable<Yavsc.ViewModels.FrontOffice.PerformerProfileViewModel>
@{ @{
ViewData["Title"] = (ViewBag.Activity?.Name ?? SR["Any"]) ; ViewData["Title"] = (ViewBag.Activity?.Name ?? SR["Any"]) ;
@ -11,9 +11,9 @@
@Html.DisplayFor(m=>profile) @Html.DisplayFor(m=>profile)
<a asp-controller="HairCutCommand" asp-action="HairCut" <a asp-controller="HairCutCommand" asp-action="HairCut"
asp-route-activityCode="@ViewBag.Activity.Code" asp-route-activityCode="@ViewBag.Activity.Code"
asp-route-performerId="@profile.Performer.Id" asp-route-performerId="@profile.PerformerId"
class="btn btn-success"> class="btn btn-success">
@SR["Proposer un rendez-vous à"] @profile.Performer.UserName @SR["Proposer un rendez-vous à"] @profile.UserName
</a> </a>
} }

View File

@ -1,4 +1,4 @@
@model IEnumerable<PerformerProfile> @model IEnumerable<PerformerProfileViewModel>
@{ @{
ViewData["Title"] = (ViewBag.Activity?.Name ?? SR["Any"]) ; ViewData["Title"] = (ViewBag.Activity?.Name ?? SR["Any"]) ;
@ -11,7 +11,7 @@
@Html.DisplayFor(m=>profile) @Html.DisplayFor(m=>profile)
<a class="btn btn-success" asp-controller="Command" asp-action="Create" asp-route-proId="@profile.PerformerId" <a class="btn btn-success" asp-controller="Command" asp-action="Create" asp-route-proId="@profile.PerformerId"
asp-route-billingCode="Profiles" asp-route-activityCode="@ViewBag.Activity.Code" > asp-route-billingCode="Profiles" asp-route-activityCode="@ViewBag.Activity.Code" >
@SR["Proposer un rendez-vous à"] @profile.Performer.UserName @SR["Proposer un rendez-vous à"] @profile.UserName
</a> </a>
} }

View File

@ -140,10 +140,10 @@ Vous êtes sur le site de commande en coiffure à domicile de Soraya Boudjouraf,
un as de la coiffure, qui oeuvre en région parisienne. un as de la coiffure, qui oeuvre en région parisienne.
En validant un formulaire de commande ici, c'est à elle que vous notifiez votre demande. En validant un formulaire de commande ici, c'est à elle que vous notifiez votre demande.
Laissez lui votre numéro de téléphone, et des détails sur votre demande lors de votre premier contact,
elle vous rappelera si besoin.
</markdown> Vous pouvez ![lui laisser votre numéro de téléphone](/HairCutCommand/HairCut?activityCode=Brush&performerId=1bd841ab-c305-4971-940d-7ddca818310c)
et/ou des détails sur votre demande,
elle vous rappelera.</markdown>
</environment> </environment>
<environment names="Development"> <environment names="Development">

View File

@ -1,5 +1,5 @@
@model ShortUserInfo @model ShortUserInfo
<div style="display: inline-block;"> <div style="display: inline-block;">
<img src="@Model.Avatar" alt="@Model.UserName" class="smalltofhol" /> <img src="@Model.Avatar" class="smalltofhol" />
@Model.UserName @Model.UserName
</div> </div>

View File

@ -0,0 +1,15 @@
@model Yavsc.ViewModels.FrontOffice.PerformerProfileViewModel
<div class="performer @(Model.Active?"active":"inactive")">
@Html.DisplayFor(m=>m.UserName)
@{ await Html.RenderPartialAsync(Model.SettingsClassName,Model.Settings); }
@if (Model.WebSite!=null) {
<a target="yaext" href="@Model.WebSite" class="btn btn-info">@SR["WebSite"]: @Model.WebSite</a>
}
<environment names="Development">
@Html.Raw(JsonConvert.SerializeObject(Model.Context.Settings))
</environment>
</div>

View File

@ -0,0 +1,327 @@
@model Yavsc.Models.Haircut.BrusherProfile
<fieldset>
<legend>Disponibilités</legend>
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.Schedule)
</dt>
<dd>
@Html.DisplayFor(model => model.Schedule)
</dd>
<dt>
@Html.DisplayNameFor(model => model.ActionDistance)
</dt>
<dd>
@Html.DisplayFor(model => model.ActionDistance)
</dd>
</dl>
</fieldset>
<fieldset>
<legend>Tarifs divers</legend>
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.ShampooPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.ShampooPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.CarePrice)
</dt>
<dd>
@Html.DisplayFor(model => model.CarePrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.FlatFeeDiscount)
</dt>
<dd>
@Html.DisplayFor(model => model.FlatFeeDiscount)
</dd>
</dl>
</fieldset>
<fieldset>
<legend>Tarifs balayages</legend>
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.LongBalayagePrice)
</dt>
<dd>
@Html.DisplayFor(model => model.LongBalayagePrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.HalfBalayagePrice)
</dt>
<dd>
@Html.DisplayFor(model => model.HalfBalayagePrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.ShortBalayagePrice)
</dt>
<dd>
@Html.DisplayFor(model => model.ShortBalayagePrice)
</dd>
</dl>
</fieldset>
<fieldset>
<legend>Tarifs défrisage</legend>
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.HalfDefrisPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.HalfDefrisPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.LongDefrisPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.LongDefrisPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.ShortDefrisPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.ShortDefrisPrice)
</dd>
</dl>
</fieldset>
<fieldset>
<legend>Tarifs mèches</legend>
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.HalfMechPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.HalfMechPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.LongMechPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.LongMechPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.ShortMechPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.ShortMechPrice)
</dd>
</dl>
</fieldset>
<fieldset>
<legend>Tarifs coupes</legend>
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.WomenHalfCutPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.WomenHalfCutPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.WomenLongCutPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.WomenLongCutPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.WomenShortCutPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.WomenShortCutPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.ManCutPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.ManCutPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.KidCutPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.KidCutPrice)
</dd>
</dl>
</fieldset>
<fieldset>
<legend>Tarifs couleurs</legend>
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.LongColorPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.LongColorPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.HalfColorPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.HalfColorPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.ShortColorPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.ShortColorPrice)
</dd>
</dl>
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.ShortMultiColorPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.ShortMultiColorPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.HalfMultiColorPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.HalfMultiColorPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.LongMultiColorPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.LongMultiColorPrice)
</dd>
</dl>
</fieldset>
<fieldset>
<legend>Tarifs burshing</legend>
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.LongBrushingPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.LongBrushingPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.HalfBrushingPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.HalfBrushingPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.ShortBrushingPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.ShortBrushingPrice)
</dd>
</dl>
</fieldset>
<fieldset>
<legend>Tarifs permanentes</legend>
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.LongPermanentPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.LongPermanentPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.HalfPermanentPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.HalfPermanentPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.ShortPermanentPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.ShortPermanentPrice)
</dd>
</dl>
</fieldset>
<fieldset>
<legend>Tarifs mise en plis</legend>
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.LongFoldingPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.LongFoldingPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.HalfFoldingPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.HalfFoldingPrice)
</dd>
<dt>
@Html.DisplayNameFor(model => model.ShortFoldingPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.ShortFoldingPrice)
</dd>
</dl>
</fieldset>
<fieldset>
<legend>Spécialités homme</legend>
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.ManBrushPrice)
</dt>
<dd>
@Html.DisplayFor(model => model.ManBrushPrice)
</dd>
</dl>
</fieldset>

View File

@ -1,10 +1,14 @@
@using Microsoft.AspNet.Authorization;
@using Microsoft.AspNet.Hosting;
@using Microsoft.AspNet.Identity; @using Microsoft.AspNet.Identity;
@using Microsoft.AspNet.Mvc; @using Microsoft.AspNet.Mvc;
@using Microsoft.Extensions.Localization;
@using Microsoft.AspNet.Mvc.Localization; @using Microsoft.AspNet.Mvc.Localization;
@using Microsoft.AspNet.Authorization; @using Microsoft.Extensions.Localization;
@using Microsoft.Extensions.OptionsModel; @using Microsoft.Extensions.OptionsModel;
@using Microsoft.Extensions.PlatformAbstractions;
@using Newtonsoft.Json;
@using System.Security.Claims; @using System.Security.Claims;
@using System.Web.Optimization; @using System.Web.Optimization;
@using Yavsc; @using Yavsc;
@ -12,6 +16,7 @@
@using Yavsc.Models; @using Yavsc.Models;
@using Yavsc.Models.Access; @using Yavsc.Models.Access;
@using Yavsc.Models.Auth; @using Yavsc.Models.Auth;
@using Yavsc.Models.Google; @using Yavsc.Models.Google;
@using Yavsc.Models.Messaging; @using Yavsc.Models.Messaging;
@using Yavsc.Models.Musical; @using Yavsc.Models.Musical;
@ -19,26 +24,26 @@
@using Yavsc.Models.Market; @using Yavsc.Models.Market;
@using Yavsc.Models.Billing; @using Yavsc.Models.Billing;
@using Yavsc.Models.Workflow; @using Yavsc.Models.Workflow;
@using Yavsc.Models.Relationship @using Yavsc.Models.Relationship;
@using Yavsc.Models.Drawing; @using Yavsc.Models.Drawing;
@using Yavsc.Models.Haircut; @using Yavsc.Models.Haircut;
@using Yavsc.Models.Payment; @using Yavsc.Models.Payment;
@using Yavsc.Models.Calendar; @using Yavsc.Models.Calendar;
@using Yavsc.Models.Google.Calendar @using Yavsc.Models.Google.Calendar;
@using Yavsc.Billing; @using Yavsc.Billing;
@using Yavsc.Models.Blog; @using Yavsc.Models.Blog;
@using Yavsc.ViewModels; @using Yavsc.ViewModels;
@using Yavsc.ViewModels.Account; @using Yavsc.ViewModels.Account;
@using Yavsc.ViewModels.Blogspot;
@using Yavsc.ViewModels.Administration;
@using Yavsc.ViewModels.Auth;
@using Yavsc.ViewModels.Manage; @using Yavsc.ViewModels.Manage;
@using Yavsc.ViewModels.Calendar; @using Yavsc.ViewModels.Calendar;
@using Yavsc.ViewModels.Auth; @using Yavsc.ViewModels.FrontOffice;
@using Yavsc.ViewModels.Administration;
@using Yavsc.ViewModels.Relationship; @using Yavsc.ViewModels.Relationship;
@using Yavsc.ViewModels.Workflow; @using Yavsc.ViewModels.Workflow;
@using Yavsc.ViewModels.Blogspot;
@using Microsoft.AspNet.Hosting;
@using Microsoft.Extensions.PlatformAbstractions;
@using PayPal.PayPalAPIInterfaceService.Model; @using PayPal.PayPalAPIInterfaceService.Model;

Binary file not shown.

Binary file not shown.