vnext
Paul Schneider 8 years ago
parent 2d08770288
commit 2f0c1ff25f
35 changed files with 2787 additions and 62 deletions

@ -0,0 +1,131 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
y="0px"
x="0px"
viewBox="0 0 947 765"
id="svg2"
inkscape:version="0.48.5 r10040"
width="100%"
height="100%"
sodipodi:docname="shoppingcart.svg">
<defs
id="defs21" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1331"
inkscape:window-height="946"
id="namedview19"
showgrid="false"
inkscape:zoom="0.921875"
inkscape:cx="419.6344"
inkscape:cy="324.12273"
inkscape:window-x="0"
inkscape:window-y="44"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<g
id="g3011">
<path
sodipodi:nodetypes="ccccc"
d="m 0,0 0,765 947,0 0,-765 z"
id="path5"
inkscape:connector-curvature="0"
style="fill:#343434" />
</g>
<g
id="g3004">
<g
id="g3014"
transform="matrix(1.5062492,0,0,1.2737607,-317.8928,-111.80805)">
<path
style="fill:#e0e0e0"
inkscape:connector-curvature="0"
id="path7"
d="m 307,539 0,25 394,0 0,-25 z"
sodipodi:nodetypes="ccccc" />
<path
style="fill:#e0e0e0"
inkscape:connector-curvature="0"
id="path9"
d="m 307,651 c -30.93,0 -56,-25.07 -56,-56 0,-30.93 25.07,-56 56,-56 30.93,0 56,25.07 56,56 0,30.93 -25.07,56 -56,56 z m -1,-28 c 16.02,0 29,-12.98 29,-29 0,-16.02 -12.98,-29 -29,-29 -16.02,0 -29,12.98 -29,29 0,16.02 12.98,29 29,29 z"
sodipodi:nodetypes="ssssssssss" />
<path
style="fill:#e0e0e0"
inkscape:connector-curvature="0"
id="path11"
d="m 697,651 c -30.93,0 -56,-25.07 -56,-56 0,-30.93 25.07,-56 56,-56 30.93,0 56,25.07 56,56 0,30.93 -25.07,56 -56,56 z m -1,-28 c 16.02,0 29,-12.98 29,-29 0,-16.02 -12.98,-29 -29,-29 -16.02,0 -29,12.98 -29,29 0,16.02 12.98,29 29,29 z"
sodipodi:nodetypes="ssssssssss" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path13"
d="m 699.46051,292.57627 c 19.11602,3.06393 42.26112,40.55101 42.37,46.4 L 744,455.52 c 0.40742,21.88621 -11.84,39.01 -11.84,39.01 0,0 -9.29,15.47 -30.43,15.47 L 334,510 334,234 z M 362,267 l 0,211 28,0 2.16949,-200.15254 z M 420.57627,283.27119 417.32203,478 l 45.35594,0 -1.08475,-188.22034 z M 486.20339,294.66102 482.94915,478 l 42.64407,0.54237 2.16949,-177.37288 z m 64,8.67796 1.62712,175.20339 37.76271,0 -3.25424,-172.49152 z m 58.11865,5.42374 3.7966,169.23728 43.18644,1.08475 10e-6,-162.18644 z M 681,322.32204 681,478 l 28,0 -2.16949,-152.42373 z"
sodipodi:nodetypes="ssscsccscccccccccccccccccccccccccccccc" />
<path
style="fill:#e0e0e0"
inkscape:connector-curvature="0"
id="path15"
d="M 229.49153,196.47458 301,234 l 0,316 33,0 0,-338.44 -79.55932,-45.72949 z"
sodipodi:nodetypes="ccccccc" />
</g>
</g>
<metadata
id="metadata17">
<rdf:RDF>
<cc:Work>
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<cc:license
rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
<dc:publisher>
<cc:Agent
rdf:about="http://openclipart.org/">
<dc:title>Openclipart</dc:title>
</cc:Agent>
</dc:publisher>
<dc:title></dc:title>
<dc:date>2013-07-02T06:51:00</dc:date>
<dc:description>A shopping cart graphic</dc:description>
<dc:source>https://openclipart.org/detail/179939/shopping-cart-by-petersirka-179939</dc:source>
<dc:creator>
<cc:Agent>
<dc:title>petersirka</dc:title>
</cc:Agent>
</dc:creator>
<dc:subject>
<rdf:Bag>
<rdf:li>basket</rdf:li>
<rdf:li>cart</rdf:li>
<rdf:li>eshop</rdf:li>
<rdf:li>shopping</rdf:li>
</rdf:Bag>
</dc:subject>
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/licenses/publicdomain/">
<cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
</cc:License>
</rdf:RDF>
</metadata>
</svg>

After

Width:  |  Height:  |  Size: 4.9 KiB

@ -53,30 +53,30 @@ namespace Yavsc.Controllers
// GET: Command
[Authorize]
public IActionResult Index()
public virtual async Task<IActionResult> Index()
{
var uid = User.GetUserId();
return View(_context.RdvQueries
return View(await _context.RdvQueries
.Include(x => x.Client)
.Include(x => x.PerformerProfile)
.Include(x => x.PerformerProfile.Performer)
.Include(x => x.Location)
.Where(x=> x.ClientId == uid || x.PerformerId == uid)
.ToList());
.ToListAsync());
}
// GET: Command/Details/5
public IActionResult Details(long? id)
public virtual async Task<IActionResult> Details(long? id)
{
if (id == null)
{
return HttpNotFound();
}
RdvQuery command = _context.RdvQueries
RdvQuery command = await _context.RdvQueries
.Include(x => x.Location)
.Include(x => x.PerformerProfile)
.Single(m => m.Id == id);
.SingleAsync(m => m.Id == id);
if (command == null)
{
return HttpNotFound();

@ -38,6 +38,70 @@ namespace Yavsc.Controllers
{
}
private async Task<HairCutQuery> GetQuery(long id)
{
return await _context.HairCutQueries
.Include(x => x.Location)
.Include(x => x.PerformerProfile)
.Include(x => x.Prestation)
.Include(x => x.PerformerProfile.Performer)
.SingleAsync(m => m.Id == id);
}
public async Task<IActionResult> ClientCancel(long id)
{
HairCutQuery command = await GetQuery(id);
if (command == null)
{
return HttpNotFound();
}
return View (command);
}
public async Task<IActionResult> ClientCancelConfirm(long id)
{
var query = await GetQuery(id);if (query == null)
{
return HttpNotFound();
}
var uid = User.GetUserId();
if (query.ClientId!=uid)
return new ChallengeResult();
_context.HairCutQueries.Remove(query);
await _context.SaveChangesAsync();
return await Index();
}
public override async Task<IActionResult> Index()
{
var uid = User.GetUserId();
return View("Index", await _context.HairCutQueries
.Include(x => x.Client)
.Include(x => x.PerformerProfile)
.Include(x => x.PerformerProfile.Performer)
.Include(x => x.Location)
.Where(x=> x.ClientId == uid || x.PerformerId == uid)
.ToListAsync());
}
public override async Task<IActionResult> Details(long? id)
{
if (id == null)
{
return HttpNotFound();
}
HairCutQuery command = await _context.HairCutQueries
.Include(x => x.Location)
.Include(x => x.PerformerProfile)
.Include(x => x.Prestation)
.Include(x => x.PerformerProfile.Performer)
.SingleAsync(m => m.Id == id);
if (command == null)
{
return HttpNotFound();
}
return View(command);
}
[HttpPost, Authorize]
[ValidateAntiForgeryToken]
@ -81,9 +145,11 @@ namespace Yavsc.Controllers
else _context.Attach<HairPrestation>(model.Prestation);
_context.HairCutQueries.Add(model);
await _context.SaveChangesAsync(User.GetUserId());
await _context.SaveChangesAsync(uid);
var brusherProfile = await _context.BrusherProfile.SingleAsync(p=>p.UserId == pro.PerformerId);
var yaev = model.CreateEvent(_localizer);
model.Client = await _context.Users.SingleAsync(u=>u.Id == model.ClientId);
var yaev = model.CreateEvent(_localizer, brusherProfile);
MessageWithPayloadResponse grep = null;
if (pro.AcceptPublicContact)
@ -205,8 +271,10 @@ namespace Yavsc.Controllers
_context.HairMultiCutQueries.Add(command, GraphBehavior.IncludeDependents);
_context.SaveChanges(User.GetUserId());
var yaev = command.CreateEvent(_localizer);
var brSettings = await _context.BrusherProfile.SingleAsync(
bp=>bp.UserId == command.PerformerId
);
var yaev = command.CreateEvent(_localizer,brSettings);
MessageWithPayloadResponse grep = null;
if (pro.AcceptNotifications

@ -14,6 +14,7 @@ using System.Threading.Tasks;
namespace Yavsc.Controllers
{
using Models;
using YavscLib;
[AllowAnonymous]
public class HomeController : Controller
@ -50,6 +51,9 @@ namespace Yavsc.Controllers
n=> !clicked.Any(c=>n.Id==c)
);
ViewData["Notify"] = notes;
ViewData["HasHaircutCommand"] = DbContext.HairCutQueries.Any
(q=>q.ClientId == uid && q.Status < QueryStatus.Failed);
return View(DbContext.Activities.Where(a=>a.ParentCode==id && !a.Hidden).Include(a=>a.Forms).Include(a=>a.Children)
.OrderByDescending(a=>a.Rate));
}

@ -34,32 +34,44 @@ namespace Yavsc.Helpers
return yaev;
}
public static HairCutQueryEvent CreateEvent(this HairCutQuery query,
IStringLocalizer SR)
IStringLocalizer SR, BrusherProfile bpr)
{
string head = SR["HaircutRdvQuery"];
string evdate = query.EventDate?.ToString("dddd dd/MM/yyyy à HH:mm")??"[pas de date spécifiée]";
string address = query.Location?.Address??"[pas de lieu spécifié]";
var p = query.Prestation;
decimal total = query.Prestation.Addition(bpr);
string strprestation = $@"Coupe: {p.Cut}, Total: {total}";
var yaev = new HairCutQueryEvent
{
Sender = query.ClientId,
Message = string.Format(SR["RdvToPerf"],
query.Client.UserName,
query.EventDate?.ToString("dddd dd/MM/yyyy à HH:mm")??"[pas de date spécifiée]",
query.Location?.Address??"[pas de lieu spécifié]",
query.ActivityCode),
Client = new ClientProviderInfo { 
UserName = query.Client.UserName ,
UserId = query.ClientId,
Avatar = query.Client.Avatar } ,
Previsional = query.Previsional,
EventDate = query.EventDate,
Location = query.Location,
Id = query.Id,
Reason = "Coupe pour un particulier",
ActivityCode = query.ActivityCode
Message = $@"{head}: {query.Client.UserName},
{evdate},
{address}
-----
{strprestation}
--
{query.AdditionalInfo}
" ,
Client = new ClientProviderInfo { 
UserName = query.Client.UserName ,
UserId = query.ClientId,
Avatar = query.Client.Avatar } ,
Previsional = query.Previsional,
EventDate = query.EventDate,
Location = query.Location,
Id = query.Id,
Reason = query.AdditionalInfo,
ActivityCode = query.ActivityCode
};
return yaev;
}
public static HairCutQueryEvent CreateEvent(this HairMultiCutQuery query,
IStringLocalizer SR)
IStringLocalizer SR, BrusherProfile bpr)
{
var yaev = new HairCutQueryEvent
{

File diff suppressed because it is too large Load Diff

@ -0,0 +1,636 @@
using Microsoft.Data.Entity.Migrations;
namespace Yavsc.Migrations
{
public partial class haircutqueryAdditionalInfo : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(name: "FK_IdentityRoleClaim<string>_IdentityRole_RoleId", table: "AspNetRoleClaims");
migrationBuilder.DropForeignKey(name: "FK_IdentityUserClaim<string>_ApplicationUser_UserId", table: "AspNetUserClaims");
migrationBuilder.DropForeignKey(name: "FK_IdentityUserLogin<string>_ApplicationUser_UserId", table: "AspNetUserLogins");
migrationBuilder.DropForeignKey(name: "FK_IdentityUserRole<string>_IdentityRole_RoleId", table: "AspNetUserRoles");
migrationBuilder.DropForeignKey(name: "FK_IdentityUserRole<string>_ApplicationUser_UserId", table: "AspNetUserRoles");
migrationBuilder.DropForeignKey(name: "FK_BlackListed_ApplicationUser_OwnerId", table: "BlackListed");
migrationBuilder.DropForeignKey(name: "FK_CircleAuthorizationToBlogPost_Blog_BlogPostId", table: "CircleAuthorizationToBlogPost");
migrationBuilder.DropForeignKey(name: "FK_CircleAuthorizationToBlogPost_Circle_CircleId", table: "CircleAuthorizationToBlogPost");
migrationBuilder.DropForeignKey(name: "FK_AccountBalance_ApplicationUser_UserId", table: "AccountBalance");
migrationBuilder.DropForeignKey(name: "FK_BalanceImpact_AccountBalance_BalanceId", table: "BalanceImpact");
migrationBuilder.DropForeignKey(name: "FK_CommandLine_Estimate_EstimateId", table: "CommandLine");
migrationBuilder.DropForeignKey(name: "FK_Estimate_ApplicationUser_ClientId", table: "Estimate");
migrationBuilder.DropForeignKey(name: "FK_Estimate_PerformerProfile_OwnerId", table: "Estimate");
migrationBuilder.DropForeignKey(name: "FK_Connection_ApplicationUser_ApplicationUserId", table: "Connection");
migrationBuilder.DropForeignKey(name: "FK_HairCutQuery_Activity_ActivityCode", table: "HairCutQuery");
migrationBuilder.DropForeignKey(name: "FK_HairCutQuery_ApplicationUser_ClientId", table: "HairCutQuery");
migrationBuilder.DropForeignKey(name: "FK_HairCutQuery_PerformerProfile_PerformerId", table: "HairCutQuery");
migrationBuilder.DropForeignKey(name: "FK_HairCutQuery_HairPrestation_PrestationId", table: "HairCutQuery");
migrationBuilder.DropForeignKey(name: "FK_HairMultiCutQuery_Activity_ActivityCode", table: "HairMultiCutQuery");
migrationBuilder.DropForeignKey(name: "FK_HairMultiCutQuery_ApplicationUser_ClientId", table: "HairMultiCutQuery");
migrationBuilder.DropForeignKey(name: "FK_HairMultiCutQuery_PerformerProfile_PerformerId", table: "HairMultiCutQuery");
migrationBuilder.DropForeignKey(name: "FK_HairPrestation_HairMultiCutQuery_HairMultiCutQueryId", table: "HairPrestation");
migrationBuilder.DropForeignKey(name: "FK_HairTaint_Color_ColorId", table: "HairTaint");
migrationBuilder.DropForeignKey(name: "FK_DimissClicked_Notification_NotificationId", table: "DimissClicked");
migrationBuilder.DropForeignKey(name: "FK_DimissClicked_ApplicationUser_UserId", table: "DimissClicked");
migrationBuilder.DropForeignKey(name: "FK_Instrumentation_Instrument_InstrumentId", table: "Instrumentation");
migrationBuilder.DropForeignKey(name: "FK_CircleMember_Circle_CircleId", table: "CircleMember");
migrationBuilder.DropForeignKey(name: "FK_CircleMember_ApplicationUser_MemberId", table: "CircleMember");
migrationBuilder.DropForeignKey(name: "FK_PostTag_Blog_PostId", table: "PostTag");
migrationBuilder.DropForeignKey(name: "FK_CommandForm_Activity_ActivityCode", table: "CommandForm");
migrationBuilder.DropForeignKey(name: "FK_PerformerProfile_Location_OrganizationAddressId", table: "PerformerProfile");
migrationBuilder.DropForeignKey(name: "FK_PerformerProfile_ApplicationUser_PerformerId", table: "PerformerProfile");
migrationBuilder.DropForeignKey(name: "FK_RdvQuery_Activity_ActivityCode", table: "RdvQuery");
migrationBuilder.DropForeignKey(name: "FK_RdvQuery_ApplicationUser_ClientId", table: "RdvQuery");
migrationBuilder.DropForeignKey(name: "FK_RdvQuery_PerformerProfile_PerformerId", table: "RdvQuery");
migrationBuilder.DropForeignKey(name: "FK_UserActivity_Activity_DoesCode", table: "UserActivity");
migrationBuilder.DropForeignKey(name: "FK_UserActivity_PerformerProfile_UserId", table: "UserActivity");
migrationBuilder.DropColumn(name: "HairMultiCutQueryId", table: "HairPrestation");
migrationBuilder.CreateTable(
name: "HairPrestationCollectionItem",
columns: table => new
{
Id = table.Column<long>(nullable: false)
.Annotation("Npgsql:Serial", true),
PrestationId = table.Column<long>(nullable: false),
QueryId = table.Column<long>(nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_HairPrestationCollectionItem", x => x.Id);
table.ForeignKey(
name: "FK_HairPrestationCollectionItem_HairPrestation_PrestationId",
column: x => x.PrestationId,
principalTable: "HairPrestation",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_HairPrestationCollectionItem_HairMultiCutQuery_QueryId",
column: x => x.QueryId,
principalTable: "HairMultiCutQuery",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.AddColumn<string>(
name: "AdditionalInfo",
table: "HairCutQuery",
nullable: true);
migrationBuilder.AddForeignKey(
name: "FK_IdentityRoleClaim<string>_IdentityRole_RoleId",
table: "AspNetRoleClaims",
column: "RoleId",
principalTable: "AspNetRoles",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_IdentityUserClaim<string>_ApplicationUser_UserId",
table: "AspNetUserClaims",
column: "UserId",
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_IdentityUserLogin<string>_ApplicationUser_UserId",
table: "AspNetUserLogins",
column: "UserId",
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_IdentityUserRole<string>_IdentityRole_RoleId",
table: "AspNetUserRoles",
column: "RoleId",
principalTable: "AspNetRoles",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_IdentityUserRole<string>_ApplicationUser_UserId",
table: "AspNetUserRoles",
column: "UserId",
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_BlackListed_ApplicationUser_OwnerId",
table: "BlackListed",
column: "OwnerId",
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_CircleAuthorizationToBlogPost_Blog_BlogPostId",
table: "CircleAuthorizationToBlogPost",
column: "BlogPostId",
principalTable: "Blog",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_CircleAuthorizationToBlogPost_Circle_CircleId",
table: "CircleAuthorizationToBlogPost",
column: "CircleId",
principalTable: "Circle",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_AccountBalance_ApplicationUser_UserId",
table: "AccountBalance",
column: "UserId",
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_BalanceImpact_AccountBalance_BalanceId",
table: "BalanceImpact",
column: "BalanceId",
principalTable: "AccountBalance",
principalColumn: "UserId",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_CommandLine_Estimate_EstimateId",
table: "CommandLine",
column: "EstimateId",
principalTable: "Estimate",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_Estimate_ApplicationUser_ClientId",
table: "Estimate",
column: "ClientId",
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_Estimate_PerformerProfile_OwnerId",
table: "Estimate",
column: "OwnerId",
principalTable: "PerformerProfile",
principalColumn: "PerformerId",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_Connection_ApplicationUser_ApplicationUserId",
table: "Connection",
column: "ApplicationUserId",
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_HairCutQuery_Activity_ActivityCode",
table: "HairCutQuery",
column: "ActivityCode",
principalTable: "Activity",
principalColumn: "Code",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_HairCutQuery_ApplicationUser_ClientId",
table: "HairCutQuery",
column: "ClientId",
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_HairCutQuery_PerformerProfile_PerformerId",
table: "HairCutQuery",
column: "PerformerId",
principalTable: "PerformerProfile",
principalColumn: "PerformerId",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_HairCutQuery_HairPrestation_PrestationId",
table: "HairCutQuery",
column: "PrestationId",
principalTable: "HairPrestation",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_HairMultiCutQuery_Activity_ActivityCode",
table: "HairMultiCutQuery",
column: "ActivityCode",
principalTable: "Activity",
principalColumn: "Code",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_HairMultiCutQuery_ApplicationUser_ClientId",
table: "HairMultiCutQuery",
column: "ClientId",
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_HairMultiCutQuery_PerformerProfile_PerformerId",
table: "HairMultiCutQuery",
column: "PerformerId",
principalTable: "PerformerProfile",
principalColumn: "PerformerId",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_HairTaint_Color_ColorId",
table: "HairTaint",
column: "ColorId",
principalTable: "Color",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_DimissClicked_Notification_NotificationId",
table: "DimissClicked",
column: "NotificationId",
principalTable: "Notification",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_DimissClicked_ApplicationUser_UserId",
table: "DimissClicked",
column: "UserId",
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_Instrumentation_Instrument_InstrumentId",
table: "Instrumentation",
column: "InstrumentId",
principalTable: "Instrument",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_CircleMember_Circle_CircleId",
table: "CircleMember",
column: "CircleId",
principalTable: "Circle",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_CircleMember_ApplicationUser_MemberId",
table: "CircleMember",
column: "MemberId",
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_PostTag_Blog_PostId",
table: "PostTag",
column: "PostId",
principalTable: "Blog",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_CommandForm_Activity_ActivityCode",
table: "CommandForm",
column: "ActivityCode",
principalTable: "Activity",
principalColumn: "Code",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_PerformerProfile_Location_OrganizationAddressId",
table: "PerformerProfile",
column: "OrganizationAddressId",
principalTable: "Location",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_PerformerProfile_ApplicationUser_PerformerId",
table: "PerformerProfile",
column: "PerformerId",
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_RdvQuery_Activity_ActivityCode",
table: "RdvQuery",
column: "ActivityCode",
principalTable: "Activity",
principalColumn: "Code",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_RdvQuery_ApplicationUser_ClientId",
table: "RdvQuery",
column: "ClientId",
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_RdvQuery_PerformerProfile_PerformerId",
table: "RdvQuery",
column: "PerformerId",
principalTable: "PerformerProfile",
principalColumn: "PerformerId",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_UserActivity_Activity_DoesCode",
table: "UserActivity",
column: "DoesCode",
principalTable: "Activity",
principalColumn: "Code",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_UserActivity_PerformerProfile_UserId",
table: "UserActivity",
column: "UserId",
principalTable: "PerformerProfile",
principalColumn: "PerformerId",
onDelete: ReferentialAction.Cascade);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(name: "FK_IdentityRoleClaim<string>_IdentityRole_RoleId", table: "AspNetRoleClaims");
migrationBuilder.DropForeignKey(name: "FK_IdentityUserClaim<string>_ApplicationUser_UserId", table: "AspNetUserClaims");
migrationBuilder.DropForeignKey(name: "FK_IdentityUserLogin<string>_ApplicationUser_UserId", table: "AspNetUserLogins");
migrationBuilder.DropForeignKey(name: "FK_IdentityUserRole<string>_IdentityRole_RoleId", table: "AspNetUserRoles");
migrationBuilder.DropForeignKey(name: "FK_IdentityUserRole<string>_ApplicationUser_UserId", table: "AspNetUserRoles");
migrationBuilder.DropForeignKey(name: "FK_BlackListed_ApplicationUser_OwnerId", table: "BlackListed");
migrationBuilder.DropForeignKey(name: "FK_CircleAuthorizationToBlogPost_Blog_BlogPostId", table: "CircleAuthorizationToBlogPost");
migrationBuilder.DropForeignKey(name: "FK_CircleAuthorizationToBlogPost_Circle_CircleId", table: "CircleAuthorizationToBlogPost");
migrationBuilder.DropForeignKey(name: "FK_AccountBalance_ApplicationUser_UserId", table: "AccountBalance");
migrationBuilder.DropForeignKey(name: "FK_BalanceImpact_AccountBalance_BalanceId", table: "BalanceImpact");
migrationBuilder.DropForeignKey(name: "FK_CommandLine_Estimate_EstimateId", table: "CommandLine");
migrationBuilder.DropForeignKey(name: "FK_Estimate_ApplicationUser_ClientId", table: "Estimate");
migrationBuilder.DropForeignKey(name: "FK_Estimate_PerformerProfile_OwnerId", table: "Estimate");
migrationBuilder.DropForeignKey(name: "FK_Connection_ApplicationUser_ApplicationUserId", table: "Connection");
migrationBuilder.DropForeignKey(name: "FK_HairCutQuery_Activity_ActivityCode", table: "HairCutQuery");
migrationBuilder.DropForeignKey(name: "FK_HairCutQuery_ApplicationUser_ClientId", table: "HairCutQuery");
migrationBuilder.DropForeignKey(name: "FK_HairCutQuery_PerformerProfile_PerformerId", table: "HairCutQuery");
migrationBuilder.DropForeignKey(name: "FK_HairCutQuery_HairPrestation_PrestationId", table: "HairCutQuery");
migrationBuilder.DropForeignKey(name: "FK_HairMultiCutQuery_Activity_ActivityCode", table: "HairMultiCutQuery");
migrationBuilder.DropForeignKey(name: "FK_HairMultiCutQuery_ApplicationUser_ClientId", table: "HairMultiCutQuery");
migrationBuilder.DropForeignKey(name: "FK_HairMultiCutQuery_PerformerProfile_PerformerId", table: "HairMultiCutQuery");
migrationBuilder.DropForeignKey(name: "FK_HairTaint_Color_ColorId", table: "HairTaint");
migrationBuilder.DropForeignKey(name: "FK_DimissClicked_Notification_NotificationId", table: "DimissClicked");
migrationBuilder.DropForeignKey(name: "FK_DimissClicked_ApplicationUser_UserId", table: "DimissClicked");
migrationBuilder.DropForeignKey(name: "FK_Instrumentation_Instrument_InstrumentId", table: "Instrumentation");
migrationBuilder.DropForeignKey(name: "FK_CircleMember_Circle_CircleId", table: "CircleMember");
migrationBuilder.DropForeignKey(name: "FK_CircleMember_ApplicationUser_MemberId", table: "CircleMember");
migrationBuilder.DropForeignKey(name: "FK_PostTag_Blog_PostId", table: "PostTag");
migrationBuilder.DropForeignKey(name: "FK_CommandForm_Activity_ActivityCode", table: "CommandForm");
migrationBuilder.DropForeignKey(name: "FK_PerformerProfile_Location_OrganizationAddressId", table: "PerformerProfile");
migrationBuilder.DropForeignKey(name: "FK_PerformerProfile_ApplicationUser_PerformerId", table: "PerformerProfile");
migrationBuilder.DropForeignKey(name: "FK_RdvQuery_Activity_ActivityCode", table: "RdvQuery");
migrationBuilder.DropForeignKey(name: "FK_RdvQuery_ApplicationUser_ClientId", table: "RdvQuery");
migrationBuilder.DropForeignKey(name: "FK_RdvQuery_PerformerProfile_PerformerId", table: "RdvQuery");
migrationBuilder.DropForeignKey(name: "FK_UserActivity_Activity_DoesCode", table: "UserActivity");
migrationBuilder.DropForeignKey(name: "FK_UserActivity_PerformerProfile_UserId", table: "UserActivity");
migrationBuilder.DropColumn(name: "AdditionalInfo", table: "HairCutQuery");
migrationBuilder.DropTable("HairPrestationCollectionItem");
migrationBuilder.AddColumn<long>(
name: "HairMultiCutQueryId",
table: "HairPrestation",
nullable: true);
migrationBuilder.AddForeignKey(
name: "FK_IdentityRoleClaim<string>_IdentityRole_RoleId",
table: "AspNetRoleClaims",
column: "RoleId",
principalTable: "AspNetRoles",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_IdentityUserClaim<string>_ApplicationUser_UserId",
table: "AspNetUserClaims",
column: "UserId",
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_IdentityUserLogin<string>_ApplicationUser_UserId",
table: "AspNetUserLogins",
column: "UserId",
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_IdentityUserRole<string>_IdentityRole_RoleId",
table: "AspNetUserRoles",
column: "RoleId",
principalTable: "AspNetRoles",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_IdentityUserRole<string>_ApplicationUser_UserId",
table: "AspNetUserRoles",
column: "UserId",
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_BlackListed_ApplicationUser_OwnerId",
table: "BlackListed",
column: "OwnerId",
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_CircleAuthorizationToBlogPost_Blog_BlogPostId",
table: "CircleAuthorizationToBlogPost",
column: "BlogPostId",
principalTable: "Blog",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_CircleAuthorizationToBlogPost_Circle_CircleId",
table: "CircleAuthorizationToBlogPost",
column: "CircleId",
principalTable: "Circle",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_AccountBalance_ApplicationUser_UserId",
table: "AccountBalance",
column: "UserId",
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_BalanceImpact_AccountBalance_BalanceId",
table: "BalanceImpact",
column: "BalanceId",
principalTable: "AccountBalance",
principalColumn: "UserId",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_CommandLine_Estimate_EstimateId",
table: "CommandLine",
column: "EstimateId",
principalTable: "Estimate",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_Estimate_ApplicationUser_ClientId",
table: "Estimate",
column: "ClientId",
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_Estimate_PerformerProfile_OwnerId",
table: "Estimate",
column: "OwnerId",
principalTable: "PerformerProfile",
principalColumn: "PerformerId",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_Connection_ApplicationUser_ApplicationUserId",
table: "Connection",
column: "ApplicationUserId",
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_HairCutQuery_Activity_ActivityCode",
table: "HairCutQuery",
column: "ActivityCode",
principalTable: "Activity",
principalColumn: "Code",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_HairCutQuery_ApplicationUser_ClientId",
table: "HairCutQuery",
column: "ClientId",
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_HairCutQuery_PerformerProfile_PerformerId",
table: "HairCutQuery",
column: "PerformerId",
principalTable: "PerformerProfile",
principalColumn: "PerformerId",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_HairCutQuery_HairPrestation_PrestationId",
table: "HairCutQuery",
column: "PrestationId",
principalTable: "HairPrestation",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_HairMultiCutQuery_Activity_ActivityCode",
table: "HairMultiCutQuery",
column: "ActivityCode",
principalTable: "Activity",
principalColumn: "Code",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_HairMultiCutQuery_ApplicationUser_ClientId",
table: "HairMultiCutQuery",
column: "ClientId",
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_HairMultiCutQuery_PerformerProfile_PerformerId",
table: "HairMultiCutQuery",
column: "PerformerId",
principalTable: "PerformerProfile",
principalColumn: "PerformerId",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_HairPrestation_HairMultiCutQuery_HairMultiCutQueryId",
table: "HairPrestation",
column: "HairMultiCutQueryId",
principalTable: "HairMultiCutQuery",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_HairTaint_Color_ColorId",
table: "HairTaint",
column: "ColorId",
principalTable: "Color",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_DimissClicked_Notification_NotificationId",
table: "DimissClicked",
column: "NotificationId",
principalTable: "Notification",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_DimissClicked_ApplicationUser_UserId",
table: "DimissClicked",
column: "UserId",
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_Instrumentation_Instrument_InstrumentId",
table: "Instrumentation",
column: "InstrumentId",
principalTable: "Instrument",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_CircleMember_Circle_CircleId",
table: "CircleMember",
column: "CircleId",
principalTable: "Circle",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_CircleMember_ApplicationUser_MemberId",
table: "CircleMember",
column: "MemberId",
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_PostTag_Blog_PostId",
table: "PostTag",
column: "PostId",
principalTable: "Blog",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_CommandForm_Activity_ActivityCode",
table: "CommandForm",
column: "ActivityCode",
principalTable: "Activity",
principalColumn: "Code",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_PerformerProfile_Location_OrganizationAddressId",
table: "PerformerProfile",
column: "OrganizationAddressId",
principalTable: "Location",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_PerformerProfile_ApplicationUser_PerformerId",
table: "PerformerProfile",
column: "PerformerId",
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_RdvQuery_Activity_ActivityCode",
table: "RdvQuery",
column: "ActivityCode",
principalTable: "Activity",
principalColumn: "Code",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_RdvQuery_ApplicationUser_ClientId",
table: "RdvQuery",
column: "ClientId",
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_RdvQuery_PerformerProfile_PerformerId",
table: "RdvQuery",
column: "PerformerId",
principalTable: "PerformerProfile",
principalColumn: "PerformerId",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_UserActivity_Activity_DoesCode",
table: "UserActivity",
column: "DoesCode",
principalTable: "Activity",
principalColumn: "Code",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_UserActivity_PerformerProfile_UserId",
table: "UserActivity",
column: "UserId",
principalTable: "PerformerProfile",
principalColumn: "PerformerId",
onDelete: ReferentialAction.Restrict);
}
}
}

@ -527,6 +527,9 @@ namespace Yavsc.Migrations
b.Property<string>("ActivityCode")
.IsRequired();
b.Property<string>("AdditionalInfo")
.HasAnnotation("MaxLength", 512);
b.Property<string>("ClientId")
.IsRequired();
@ -604,8 +607,6 @@ namespace Yavsc.Migrations
b.Property<int>("Gender");
b.Property<long?>("HairMultiCutQueryId");
b.Property<int>("Length");
b.Property<bool>("Shampoo");
@ -615,6 +616,18 @@ namespace Yavsc.Migrations
b.HasKey("Id");
});
modelBuilder.Entity("Yavsc.Models.Haircut.HairPrestationCollectionItem", b =>
{
b.Property<long>("Id")
.ValueGeneratedOnAdd();
b.Property<long>("PrestationId");
b.Property<long>("QueryId");
b.HasKey("Id");
});
modelBuilder.Entity("Yavsc.Models.Haircut.HairTaint", b =>
{
b.Property<long>("Id")
@ -1222,11 +1235,15 @@ namespace Yavsc.Migrations
.HasForeignKey("PerformerId");
});
modelBuilder.Entity("Yavsc.Models.Haircut.HairPrestation", b =>
modelBuilder.Entity("Yavsc.Models.Haircut.HairPrestationCollectionItem", b =>
{
b.HasOne("Yavsc.Models.Haircut.HairPrestation")
.WithMany()
.HasForeignKey("PrestationId");
b.HasOne("Yavsc.Models.Haircut.HairMultiCutQuery")
.WithMany()
.HasForeignKey("HairMultiCutQueryId");
.HasForeignKey("QueryId");
});
modelBuilder.Entity("Yavsc.Models.Haircut.HairTaint", b =>

@ -31,6 +31,7 @@ namespace Yavsc.Models.Billing
get; set;
}
[DisplayAttribute(Name="Status de la requête")]
public QueryStatus Status { get; set; }
[Required]
@ -39,7 +40,7 @@ namespace Yavsc.Models.Billing
/// <summary>
/// The client
/// </summary>
[ForeignKey("ClientId")]
[ForeignKey("ClientId"),Display(Name="Client")]
public ApplicationUser Client { get; set; }
[Required]
@ -47,13 +48,13 @@ namespace Yavsc.Models.Billing
/// <summary>
/// The performer identifier
/// </summary>
[ForeignKey("PerformerId")]
[ForeignKey("PerformerId"),Display(Name="Préstataire")]
public PerformerProfile PerformerProfile { get; set; }
public DateTime? ValidationDate {get; set;}
[Display(Name="Montant prévisionel de la préstation")]
public decimal? Previsional { get; set; }
/// <summary>
/// The bill
@ -63,7 +64,7 @@ namespace Yavsc.Models.Billing
[Required]
public string ActivityCode { get; set; }
[ForeignKey("ActivityCode"),JsonIgnore]
[ForeignKey("ActivityCode"),JsonIgnore,Display(Name="Domaine d'activité")]
public virtual Activity Context  { get; set ; }
}
}

@ -15,13 +15,15 @@ namespace Yavsc.Models.Haircut
[Required]
public long PrestationId { get; set; }
[ForeignKey("PrestationId"),Required]
[ForeignKey("PrestationId"),Required,Display(Name="Préstation")]
public virtual HairPrestation Prestation { get; set; }
[ForeignKey("LocationId")]
[Display(Name="Lieu du rendez-vous")]
public virtual Location Location { get; set; }
[Display(Name="Date et heure")]
public DateTime? EventDate
{
get;
@ -34,5 +36,9 @@ namespace Yavsc.Models.Haircut
set;
}
[Display(Name="Informations complémentaires"),
StringLengthAttribute(512)]
public string AdditionalInfo { get; set; }
}
}

@ -1,4 +1,5 @@
using System;
using System.ComponentModel.DataAnnotations;
using Yavsc.Models.Auth;
using Yavsc.Models.Relationship;
using YavscLib;
@ -30,6 +31,7 @@ namespace Yavsc.Models.Haircut.Views
Status = query.Status;
Location = query.Location;
EventDate = query.EventDate;
AdditionalInfo = query.AdditionalInfo;
}
public long Id { get; set; }
public HairPrestation Prestation { get; set; }
@ -43,5 +45,7 @@ namespace Yavsc.Models.Haircut.Views
set;
}
[Display(Name="Informations complémentaires")]
public string AdditionalInfo { get; set; }
}
}

@ -239,6 +239,7 @@
<data name="Google calendar"><value>Agenda Google</value></data>
<data name="Google error"><value>Erreur Google : {0}</value></data>
<data name="Google registration id"><value>Identifiant d'enregistrement Google</value></data>
<data name="HaircutRdvQuery"><value>Demande de préstation en coiffure à domicile</value></data>
<data name="Hide source"><value>Cacher le texte source de l'article</value></data>
<data name="Home"><value>Accueil</value></data>
<data name="Hide"><value>Cacher</value></data>

@ -0,0 +1,8 @@
namespace Yavsc.ViewModels
{
public class BasketView
{
public long HairCutActiveQueryCount { get; set; }
}
}

@ -0,0 +1,7 @@
namespace Yavsc.ViewModels.Haircut
{
public class HaircutClientView
{
}
}

@ -0,0 +1,7 @@
namespace Yavsc.ViewModels.Haircut
{
public class HaircutProviderView
{
}
}

@ -0,0 +1,16 @@
@model HairCutQuery
@{
ViewData["Title"] = @SR["Annuler votre commande"];
}
<h2>@ViewData["Title"]</h2>
<div>
<hr />
@Html.DisplayFor(m=>m)
</div>
<p>
<a asp-action="ClientCancelConfirm" asp-route-id="@Model.Id" class="btn btn-success">Je confirme, je veux annuler cette commande</a> |
<a asp-action="Index" class="btn btn-link">@SR["Back to List"]</a>
</p>

@ -6,13 +6,25 @@
<div class="form-horizontal">
<h4>@SR["Your book query"]</h4>
<hr />
<ul>
<li>
Votre star de la coiffure:
<dl>
<dt>
Votre star de la coiffure
</dt>
<dd>
@Html.DisplayFor(m=>m.PerformerProfile)
</li>
<li>
</dd>
<dt>
@Html.DisplayNameFor(m=>m.Prestation)
</dt>
<dd>
@Html.DisplayFor(m=>m.Prestation)
</dd>
<dt>
@Html.DisplayNameFor(m=>m.AdditionalInfo)
</dt>
<dd>@Html.DisplayFor(m=>m.AdditionalInfo)
</dd>
</dl>
<p>
Addition minimale
(Compter des frais supplémentaires
@ -21,6 +33,10 @@
<span class="price"> @ViewBag.Addition </span></p>
</li>
<li>
@Model.AdditionalInfo
</li>
<li>
@if (Model.EventDate == null) {
<p>Pas de date convenue ...</p>
} else {

@ -0,0 +1,16 @@
@model HairCutQuery
@{
ViewData["Title"] = @SR["Le detail de votre commande de prestation en coiffure à domicile"];
}
<h2>@ViewData["Title"]</h2>
<div>
<hr />
@Html.DisplayFor(m=>m)
</div>
<p>
<a asp-action="ClientCancel" asp-route-id="@Model.Id" class="btn btn-primary">Annuler cette commande</a> |
<a asp-action="Index" class="btn btn-link">@SR["Back to List"]</a>
</p>

@ -208,6 +208,13 @@
</div>
</div>
</div>
<div class="form-group">
<label asp-for="AdditionalInfo" class="col-md-2 control-label"></label>
<div class="col-md-offset-2 col-md-10">
<textarea asp-for="AdditionalInfo" class="form-control">
</textarea>
</div>
</div>
<span>Total: <span id="Total" class="total"></span>
</span>
<input asp-for="ClientId" type="hidden" />

@ -0,0 +1,51 @@
@model IEnumerable<HairCutQuery>
@{
ViewData["Title"] = "Vos commandes en coiffure à domicile";
}
<h2>@ViewData["Title"]</h2>
<table class="table">
<tr>
<th>
@SR["DateCreated"]
</th>
<th>
@SR["EventDate"]
</th>
<th>
@SR["Location"]
</th>
<th>
@SR["Performer"]
</th>
<th>
@SR["ValidationDate"]
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.DateCreated)
</td>
<td>
@Html.DisplayFor(modelItem => item.EventDate)
</td>
<td>
@Html.DisplayFor(modelItem => item.Location.Address)
</td>
<td>
@Html.DisplayFor(modelItem => item.PerformerProfile.Performer.UserName)
</td>
<td>
@Html.DisplayFor(modelItem => item.ValidationDate)
</td>
<td>
<a asp-action="Details" asp-route-id="@item.Id" class="btn btn-primary">Details</a>
</td>
</tr>
}
</table>

@ -0,0 +1,51 @@
@model IEnumerable<HairCutQuery>
@{
ViewData["Title"] = "Vos commandes en coiffure à domicile";
}
<h2>@ViewData["Title"]</h2>
<table class="table">
<tr>
<th>
@SR["DateCreated"]
</th>
<th>
@SR["EventDate"]
</th>
<th>
@SR["Location"]
</th>
<th>
@SR["Client"]
</th>
<th>
@SR["ValidationDate"]
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.DateCreated)
</td>
<td>
@Html.DisplayFor(modelItem => item.EventDate)
</td>
<td>
@Html.DisplayFor(modelItem => item.Location.Address)
</td>
<td>
@Html.DisplayFor(modelItem => item.Client.UserName)
</td>
<td>
@Html.DisplayFor(modelItem => item.ValidationDate)
</td>
<td>
<a asp-action="Details" asp-route-id="@item.Id" class="btn btn-primary">Details</a>
</td>
</tr>
}
</table>

@ -114,6 +114,18 @@ Paul,
</environment>
<environment names="coiffure">
<markdown>
Vous êtes sur le site de commande en coiffure à domicile de Soraya Boudjouraf,
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.
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>
</environment>
<environment names="Development">
<markdown>
## Ceci est un site de développement.

@ -0,0 +1,10 @@
@Model BasketView
<ul>
<li>
<a asp-controller="HaircutCommand" asp-action="Index">
@Model.HairCutActiveQueryCount </a>
</li>
</ul>

@ -71,3 +71,10 @@
}
</div>
}
@section ctxmenu {
@if ((bool)ViewData["HasHaircutCommand"]) {
<li><a asp-controller="HairCutCommand" class="badge" >
<img src="~/images/shoppingcart.svg" alt="basket" /></a></li>
}
}

@ -0,0 +1,24 @@
@model HairCutQuery
<dl>
<dt>@Html.DisplayNameFor(m=>m.Prestation)
</dt>
<dd>@Html.DisplayFor(m=>m.Prestation)
</dd>
<dt>@Html.DisplayNameFor(m=>m.PerformerProfile)
</dt>
<dd>@Html.DisplayFor(m=>m.PerformerProfile)
</dd>
<dt>@Html.DisplayNameFor(m=>m.EventDate)
</dt>
<dd>@Html.DisplayFor(m=>m.EventDate)
</dd>
<dt>@Html.DisplayNameFor(m=>m.Location)
</dt>
<dd>@Html.DisplayFor(m=>m.Location)
</dd>
</dl>

@ -0,0 +1,46 @@
@model HairPrestation
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.Cares)
</dt>
<dd>
@Html.DisplayFor(model => model.Cares)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Cut)
</dt>
<dd>
@Html.DisplayFor(model => model.Cut)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Dressing)
</dt>
<dd>
@Html.DisplayFor(model => model.Dressing)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Gender)
</dt>
<dd>
@Html.DisplayFor(model => model.Gender)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Length)
</dt>
<dd>
@Html.DisplayFor(model => model.Length)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Shampoo)
</dt>
<dd>
@Html.DisplayFor(model => model.Shampoo)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Tech)
</dt>
<dd>
@Html.DisplayFor(model => model.Tech)
</dd>
</dl>

@ -60,27 +60,14 @@
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
@RenderSection("ctxmenu", required: false)
<li><a asp-controller="Blogspot" asp-action="Index" class="navbar-link">@SR["Blogs"]</a></li>
<li><a asp-controller="Home" asp-action="Chat" class="navbar-link">@SR["Chat"]</a></li>
<li><a asp-controller="Home" asp-action="Contact" class="navbar-link">@SR["Contact"]</a></li>
<li><a asp-controller="Home" asp-action="About" class="navbar-link">@SR["About"] @SiteSettings.Value.Title</a> </li>
@if (User.IsInRole(Constants.AdminGroupName)) {
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
Administration <span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li><a asp-controller="Administration" asp-action="Index">Index</a></li>
<li><a asp-controller="Activity" asp-action="Index">Activités</a></li>
<li><a asp-controller="CommandForms" asp-action="Index">Formulaires</a></li>
<li><a asp-controller="Notifications" asp-action="Index">Notifications</a></li>
<li><a asp-controller="SIRENExceptions" asp-action="Index">Excéptions au numéro de SIREN</a></li>
</ul>
</li>
}
</ul>
@RenderSection("ctxmenu", required: false)
@await Html.PartialAsync("_LoginPartial")
</div>
</div>

@ -2,19 +2,35 @@
@if (User.IsSignedIn())
{
<form asp-controller="Account" asp-action="LogOff" method="post" id="logoutForm" class="navbar-right">
<ul class="nav navbar-nav navbar-right">
<li>
<a asp-controller="Manage" class="navbar-link" asp-action="Index" title="Manage">
@Component.Invoke("Avatar", User.GetUserId(), ".xs")
@SR["Hello"] @User.GetUserName()!</a>
</li>
@if (User.IsInRole(Constants.AdminGroupName)) {
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
Administration <span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li><a asp-controller="Administration" asp-action="Index">Index</a></li>
<li><a asp-controller="Activity" asp-action="Index">Activités</a></li>
<li><a asp-controller="CommandForms" asp-action="Index">Formulaires</a></li>
<li><a asp-controller="Notifications" asp-action="Index">Notifications</a></li>
<li><a asp-controller="SIRENExceptions" asp-action="Index">Excéptions au numéro de SIREN</a></li>
</ul>
</li>}
<li>
<button type="submit" class="btn navbar-btn" >@SR["Logout"]</button>
<form asp-controller="Account" asp-action="LogOff"
method="post" id="logoutForm">
<button type="submit" class="btn navbar-btn" >@SR["Logout"]</button>
<input type="hidden" name="ReturnUrl" value="@Url.Action()" />
</form>
</li>
</ul>
</form>
}
else
{

@ -8,9 +8,15 @@ ssh root@localhost rm -rf $FSPATH/approot/src
set -e
cd bin/output/
rsync -ravu wwwroot approot root@localhost:$FSPATH
sleep 1
ssh root@localhost service kestrel restart
)
echo "Now, go and try <https://yavscpre.pschneider.fr>"
# wait a little, for the processes to become stable
sleep 15
echo "Then, feel free to launch contrib/rsync-to-prod.sh"
sleep 15

@ -8,6 +8,11 @@ ssh root@localhost rm -rf $FSPATH/approot/src
set -e
cd bin/output/
rsync -ravu wwwroot approot root@localhost:$FSPATH
sleep 1
ssh root@localhost service kestrel restart
)
# wait a little, for the processes to become stable
sleep 10

@ -1,7 +1,9 @@
/* Wrapping element */
/* Set some basic padding to keep content from hitting the edges */
.badge img {
height: 2em;
}
.performer {
padding-left: 1em;
background-repeat: no-repeat;

@ -1 +1 @@
.discussion,.notif,.pv{font-family:monospace}.smalltofhol,tr.visiblepost{max-height:3em}.blog a:active,.blog a:hover,a:active,a:hover{outline:0}#discussion,.blogphoto{float:left}.performer{padding-left:1em;background-repeat:no-repeat;background-image:url(/images/lis.svg);background-attachment:local;background-size:contain}.performer ul{margin-left:2.5em}.smalltofhol{max-width:3em;float:left;margin:.5em}.price,.total{font-weight:700;padding:.2em;margin:.2em}.price{font-size:x-large;border:2px solid #000;border-radius:1em}.total{font-size:xx-large;background-color:#f8f;border:3px solid #000;border-radius:1em}.blog,.panel{padding:1em}.blog a{font-weight:900}.discussion{color:#000}.notif{color:#006}.pv{color:#251;font-style:bold}#targets{display:block}tr.hiddenpost{background-color:#888;font-size:smaller;max-height:2em}a.bloglink{font-weight:700;text-shadow:0 0 8px #000}a{font-weight:900}.panel{display:inline-block;margin:1em;color:#000;background-color:inherit;border:1px solid #000}button,input,select,textarea{background-color:#bbb;color:#000}.jumbotron{padding:.5em}.carousel .item .btn{-webkit-transition:-webkit-transform 2s;transition:transform 2s background-color 1s color 1s;transform:scale3d(0,0,0);-webkit-transform:scale3d(0,0,0)}.carousel .active .btn{-webkit-transform:inherit;transform:inherit}.container{-webkit-transition:background-color 2s color 1s;-moz-transition:background-color 2s color 1s;transition:background-color 2s color 1s}.disabled{color:#999;background-color:#555}.carousel-caption-s p{font-family:jubilat;font-weight:600;font-size:large;line-height:1.1;text-decoration:overline;text-decoration-line:overline;text-shadow:3px 3px 7px #000;-webkit-text-shadow:inset 0 3px 5px #000;color:#000;margin:.5em;padding:.5em;animation:mymove 3s infinite;background-color:rgba(256,256,256,.6)}.carousel-caption-s{right:3em;top:1em;left:3em;z-index:10;padding-top:20px;padding-bottom:20px;text-align:center;text-shadow:0 4px 8px rgba(0,0,0,.6);min-height:16em;overflow:auto}.carousel-inner .item{padding-left:15%;padding-right:15%}.carousel-indicators{position:absolute;z-index:15;padding:0;text-align:center;list-style:none;top:.1em;height:1em}main.container{padding-right:1em;padding-left:1em;margin-left:1em;margin-right:1em}@-webkit-keyframes mymove{from,to{text-decoration-color:red}50%{text-decoration-color:#00f}}@keyframes mymove{from,to{text-decoration-color:red}50%{text-decoration-color:#00f}}ul.actiongroup li{display:inline}ul.actiongroup li a:hover{background-color:rgba(200,200,200,.6);color:#400}footer{vertical-align:bottom;padding:1.5em}.display-field{font-kerning:none;display:inline-flex;color:#008}.display-label{font-family:'Lucida Sans','Lucida Sans Regular','Lucida Grande','Lucida Sans Unicode',Geneva,Verdana,sans-serif;font-stretch:condensed;display:inline-flex;color:#ff8;padding:.1em;border-radius:.5em;background-color:#210912}footer{color:grey;font-weight:bolder;font-size:x-small}.meta{color:#444;font-style:italic;font-size:smaller}.activity{font-family:fantasy}.blogtitle{display:inline-block;font-size:x-large}.blogphoto{margin:1em}
.discussion,.notif,.pv{font-family:monospace}.smalltofhol,tr.visiblepost{max-height:3em}.blog a:active,.blog a:hover,a:active,a:hover{outline:0}#discussion,.blogphoto{float:left}.badge img{height:2em}.performer{padding-left:1em;background-repeat:no-repeat;background-image:url(/images/lis.svg);background-attachment:local;background-size:contain}.performer ul{margin-left:2.5em}.smalltofhol{max-width:3em;float:left;margin:.5em}.price,.total{font-weight:700;padding:.2em;margin:.2em}.price{font-size:x-large;border:2px solid #000;border-radius:1em}.total{font-size:xx-large;background-color:#f8f;border:3px solid #000;border-radius:1em}.blog,.panel{padding:1em}.blog a{font-weight:900}.discussion{color:#000}.notif{color:#006}.pv{color:#251;font-style:bold}#targets{display:block}tr.hiddenpost{background-color:#888;font-size:smaller;max-height:2em}a.bloglink{font-weight:700;text-shadow:0 0 8px #000}a{font-weight:900}.panel{display:inline-block;margin:1em;color:#000;background-color:inherit;border:1px solid #000}button,input,select,textarea{background-color:#bbb;color:#000}.jumbotron{padding:.5em}.carousel .item .btn{-webkit-transition:-webkit-transform 2s;transition:transform 2s background-color 1s color 1s;transform:scale3d(0,0,0);-webkit-transform:scale3d(0,0,0)}.carousel .active .btn{-webkit-transform:inherit;transform:inherit}.container{-webkit-transition:background-color 2s color 1s;-moz-transition:background-color 2s color 1s;transition:background-color 2s color 1s}.disabled{color:#999;background-color:#555}.carousel-caption-s p{font-family:jubilat;font-weight:600;font-size:large;line-height:1.1;text-decoration:overline;text-decoration-line:overline;text-shadow:3px 3px 7px #ffc8ff;-webkit-text-shadow:inset 0 3px 5px #ffc8ff;color:#000;margin:.5em;padding:.5em;animation:mymove 3s infinite;background-color:rgba(255,255,255,.6)}.carousel-caption-s{right:3em;top:1em;left:3em;z-index:10;padding-top:20px;padding-bottom:20px;text-align:center;min-height:16em;overflow:auto}.carousel-inner .item{padding-left:15%;padding-right:15%}.carousel-indicators{position:absolute;z-index:15;padding:0;text-align:center;list-style:none;top:.1em;height:1em}main.container{padding-right:1em;padding-left:1em;margin-left:1em;margin-right:1em}@-webkit-keyframes mymove{from,to{text-decoration-color:red}50%{text-decoration-color:#00f}}@keyframes mymove{from,to{text-decoration-color:red}50%{text-decoration-color:#00f}}ul.actiongroup li{display:inline}ul.actiongroup li a:hover{background-color:rgba(200,200,200,.6);color:#400}footer{vertical-align:bottom;padding:1.5em}.display-field{font-kerning:none;display:inline-flex;color:#008}.display-label{font-family:'Lucida Sans','Lucida Sans Regular','Lucida Grande','Lucida Sans Unicode',Geneva,Verdana,sans-serif;font-stretch:condensed;display:inline-flex;color:#ff8;padding:.1em;border-radius:.5em;background-color:#210912}footer{color:grey;font-weight:bolder;font-size:x-small}.meta{color:#444;font-style:italic;font-size:smaller}.activity{font-family:fantasy}.blogtitle{display:inline-block;font-size:x-large}.blogphoto{margin:1em}

@ -0,0 +1,126 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
y="0px"
x="0px"
viewBox="0 0 947 765"
id="svg2"
inkscape:version="0.48.5 r10040"
width="100%"
height="100%"
sodipodi:docname="shoppingcart.svg">
<defs
id="defs21" />
<sodipodi:namedview
pagecolor="#462218"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0.97647059"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1014"
id="namedview19"
showgrid="false"
inkscape:zoom="0.61004536"
inkscape:cx="764.35007"
inkscape:cy="379.1273"
inkscape:window-x="0"
inkscape:window-y="44"
inkscape:window-maximized="1"
inkscape:current-layer="svg2"
inkscape:snap-global="true"
inkscape:snap-nodes="true"
inkscape:snap-grids="false"
inkscape:snap-to-guides="true"
inkscape:snap-page="false"
showguides="true"
inkscape:guide-bbox="true" />
<g
transform="matrix(1.5062492,0,0,1.2737607,-257.24157,-154.42784)"
id="g3014">
<path
sodipodi:nodetypes="ccccc"
d="m 307,539 0,25 394,0 0,-25 z"
id="path7"
inkscape:connector-curvature="0"
style="fill:#e0e0e0" />
<path
sodipodi:nodetypes="ssssssssss"
d="m 307,651 c -30.93,0 -56,-25.07 -56,-56 0,-30.93 25.07,-56 56,-56 30.93,0 56,25.07 56,56 0,30.93 -25.07,56 -56,56 z m -1,-28 c 16.02,0 29,-12.98 29,-29 0,-16.02 -12.98,-29 -29,-29 -16.02,0 -29,12.98 -29,29 0,16.02 12.98,29 29,29 z"
id="path9"
inkscape:connector-curvature="0"
style="fill:#e0e0e0" />
<path
sodipodi:nodetypes="ssssssssss"
d="m 697,651 c -30.93,0 -56,-25.07 -56,-56 0,-30.93 25.07,-56 56,-56 30.93,0 56,25.07 56,56 0,30.93 -25.07,56 -56,56 z m -1,-28 c 16.02,0 29,-12.98 29,-29 0,-16.02 -12.98,-29 -29,-29 -16.02,0 -29,12.98 -29,29 0,16.02 12.98,29 29,29 z"
id="path11"
inkscape:connector-curvature="0"
style="fill:#e0e0e0" />
<path
sodipodi:nodetypes="ssscsccscccccccccccccccccccccccccccccc"
d="m 726.01924,304.61534 c 19.07083,3.43527 15.70239,28.51194 15.81127,34.36093 L 744,455.52 c 0.40742,21.88621 -10.95471,39.01 -10.95471,39.01 0,0 -10.17529,15.47 -31.31529,15.47 L 334,510 334,234 z m -365.04304,-31.15848 0.34127,207.36802 41.07661,0.054 -0.0895,-200.7486 z m 64.18499,11.24111 0.01,195.72335 41.49059,0.19587 -0.42078,-189.52894 z m 64.54121,10.39108 -0.2692,185.33227 41.69309,0.99996 -0.48638,-179.72835 z m 64.25491,10.67125 -0.42047,175.20339 41.58945,-0.32757 -0.37704,-167.78058 z m 63.92017,11.88061 -0.29859,163.18397 41.48868,0.35362 10e-6,-157.73722 z m 63.80505,9.92733 1.0238,153.66019 40.90097,0.69735 -0.39891,-147.18935 z"
id="path13"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
sodipodi:nodetypes="ccccccc"
d="M 229.49153,196.47458 301,234 l 0,316 33,0 0,-338.44 -79.55932,-45.72949 z"
id="path15"
inkscape:connector-curvature="0"
style="fill:#e0e0e0" />
</g>
<metadata
id="metadata17">
<rdf:RDF>
<cc:Work>
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<cc:license
rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
<dc:publisher>
<cc:Agent
rdf:about="http://openclipart.org/">
<dc:title>Openclipart</dc:title>
</cc:Agent>
</dc:publisher>
<dc:title />
<dc:date>2013-07-02T06:51:00</dc:date>
<dc:description>A shopping cart graphic</dc:description>
<dc:source>https://openclipart.org/detail/179939/shopping-cart-by-petersirka-179939</dc:source>
<dc:creator>
<cc:Agent>
<dc:title>petersirka</dc:title>
</cc:Agent>
</dc:creator>
<dc:subject>
<rdf:Bag>
<rdf:li>basket</rdf:li>
<rdf:li>cart</rdf:li>
<rdf:li>eshop</rdf:li>
<rdf:li>shopping</rdf:li>
</rdf:Bag>
</dc:subject>
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/licenses/publicdomain/">
<cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
</cc:License>
</rdf:RDF>
</metadata>
</svg>

After

Width:  |  Height:  |  Size: 4.9 KiB

@ -14,6 +14,8 @@ namespace YavscLib
Rejected,
Accepted,
InProgress,
// final states
Failed,
Success
}

Loading…