diff --git a/Yavsc/ApiControllers/AccountController.cs b/Yavsc/ApiControllers/AccountController.cs
index cf28fd5c..bbc82cb8 100644
--- a/Yavsc/ApiControllers/AccountController.cs
+++ b/Yavsc/ApiControllers/AccountController.cs
@@ -144,7 +144,7 @@ namespace Yavsc.WebApi.Controllers
/// MyUpdate containing the new user name
/// Ok when all is ok.
[HttpPut("~/api/me")]
- public async Task UpdateMe(MyUpdate me)
+ public async Task UpdateMe(UserInfo me)
{
if (!ModelState.IsValid) return new BadRequestObjectResult(
new { error = "Specify some valid user update request." });
diff --git a/Yavsc/ApiControllers/BookQueryApiController.cs b/Yavsc/ApiControllers/BookQueryApiController.cs
index ead226c6..7c8c76d5 100644
--- a/Yavsc/ApiControllers/BookQueryApiController.cs
+++ b/Yavsc/ApiControllers/BookQueryApiController.cs
@@ -47,7 +47,8 @@ namespace Yavsc.Controllers
Location = c.Location,
EventDate = c.EventDate,
Id = c.Id,
- Previsional = c.Previsional
+ Previsional = c.Previsional,
+ Reason = c.Reason
}).
OrderBy(c=>c.Id).
Take(25);
diff --git a/Yavsc/Controllers/AdministrationController.cs b/Yavsc/Controllers/AdministrationController.cs
index ae3d2a48..fc41879e 100644
--- a/Yavsc/Controllers/AdministrationController.cs
+++ b/Yavsc/Controllers/AdministrationController.cs
@@ -1,5 +1,4 @@
-using System.Collections.Generic;
using System.Linq;
using System.Security.Claims;
using System.Threading.Tasks;
@@ -7,7 +6,10 @@ using Microsoft.AspNet.Authorization;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
using Microsoft.AspNet.Mvc;
+using Microsoft.Data.Entity;
using Yavsc.Models;
+using Yavsc.Models.Auth;
+using Yavsc.ViewModels.Administration;
namespace Yavsc.Controllers
{
@@ -17,11 +19,15 @@ namespace Yavsc.Controllers
private readonly UserManager _userManager;
private readonly RoleManager _roleManager;
+ private readonly ApplicationDbContext context;
+
public AdministrationController(UserManager userManager,
- RoleManager roleManager)
+ RoleManager roleManager,
+ ApplicationDbContext context)
{
_userManager = userManager;
_roleManager = roleManager;
+ this.context = context;
}
///
@@ -47,30 +53,53 @@ namespace Yavsc.Controllers
AddErrors(addToRoleResult);
return new BadRequestObjectResult(ModelState);
}
- return Ok(new {message="you owned it."});
+ return Ok(new { message = "you owned it." });
}
- public class RoleInfo {
- public string Name { get; set; }
- public IEnumerable Users { get; set; }
- }
- [Authorize(Roles=Constants.AdminGroupName)]
+
+ [Authorize(Roles = Constants.AdminGroupName)]
[Produces("application/json")]
- public async Task Index() {
+ public async Task Index()
+ {
var adminCount = await _userManager.GetUsersInRoleAsync(
Constants.AdminGroupName);
var youAreAdmin = await _userManager.IsInRoleAsync(
await _userManager.FindByIdAsync(User.GetUserId()),
Constants.AdminGroupName);
- var roles = _roleManager.Roles.Select(x=>
- new RoleInfo {
- Name = x.Name,
- Users = x.Users.Select( u=>u.UserId )
- } );
- return Ok (new { Roles = roles, AdminCount = adminCount.Count,
- YouAreAdmin = youAreAdmin
+ var roles = _roleManager.Roles.Include(
+ x => x.Users
+ ).Select(x => new RoleInfo {
+ Id = x.Id,
+ Name = x.Name,
+ Users = x.Users.Select(u=>u.UserId).ToArray()
+ });
+ return View(new AdminViewModel
+ {
+ Roles = roles.ToArray(),
+ AdminCount = adminCount.Count,
+ YouAreAdmin = youAreAdmin
});
}
+ public IActionResult Role(string id)
+ {
+ IdentityRole role = _roleManager.Roles
+ .Include(r=>r.Users).FirstOrDefault
+ ( r=> r.Id == id );
+ var ri = GetRoleUserCollection(role);
+ return View("Role",ri);
+ }
+
+ public RoleUserCollection GetRoleUserCollection(IdentityRole role)
+ {
+ var result = new RoleUserCollection {
+ Id = role.Id,
+ Name = role.Name,
+ Users = context.Users.Where(u=>role.Users.Any(ru => u.Id == ru.UserId))
+ .Select( u => new UserInfo { UserName = u.UserName, Avatar = u.Avatar, UserId = u.Id } )
+ .ToArray()
+ };
+ return result;
+ }
private void AddErrors(IdentityResult result)
{
foreach (var error in result.Errors)
diff --git a/Yavsc/Controllers/FrontOfficeController.cs b/Yavsc/Controllers/FrontOfficeController.cs
index e3a0959f..bb395661 100644
--- a/Yavsc/Controllers/FrontOfficeController.cs
+++ b/Yavsc/Controllers/FrontOfficeController.cs
@@ -48,7 +48,8 @@ namespace Yavsc.Controllers
a => a.Code == id);
return View(
- _context.Performers.Include(p => p.Performer).Where
+ _context.Performers.Include(p => p.Performer)
+ .Include(p=>p.Performer.Devices).Where
(p => p.ActivityCode == id && p.Active).OrderBy(
x => x.MinDailyCost
)
diff --git a/Yavsc/Migrations/20161209121035_bookQueryReason.Designer.cs b/Yavsc/Migrations/20161209121035_bookQueryReason.Designer.cs
new file mode 100644
index 00000000..3726ab32
--- /dev/null
+++ b/Yavsc/Migrations/20161209121035_bookQueryReason.Designer.cs
@@ -0,0 +1,838 @@
+using System;
+using Microsoft.Data.Entity;
+using Microsoft.Data.Entity.Infrastructure;
+using Microsoft.Data.Entity.Migrations;
+using Yavsc.Models;
+
+namespace Yavsc.Migrations
+{
+ [DbContext(typeof(ApplicationDbContext))]
+ [Migration("20161209121035_bookQueryReason")]
+ partial class bookQueryReason
+ {
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+ modelBuilder
+ .HasAnnotation("ProductVersion", "7.0.0-rc1-16348");
+
+ modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityRole", b =>
+ {
+ b.Property("Id");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken();
+
+ b.Property("Name")
+ .HasAnnotation("MaxLength", 256);
+
+ b.Property("NormalizedName")
+ .HasAnnotation("MaxLength", 256);
+
+ b.HasKey("Id");
+
+ b.HasIndex("NormalizedName")
+ .HasAnnotation("Relational:Name", "RoleNameIndex");
+
+ b.HasAnnotation("Relational:TableName", "AspNetRoles");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityRoleClaim", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("ClaimType");
+
+ b.Property("ClaimValue");
+
+ b.Property("RoleId")
+ .IsRequired();
+
+ b.HasKey("Id");
+
+ b.HasAnnotation("Relational:TableName", "AspNetRoleClaims");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityUserClaim", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("ClaimType");
+
+ b.Property("ClaimValue");
+
+ b.Property("UserId")
+ .IsRequired();
+
+ b.HasKey("Id");
+
+ b.HasAnnotation("Relational:TableName", "AspNetUserClaims");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityUserLogin", b =>
+ {
+ b.Property("LoginProvider");
+
+ b.Property("ProviderKey");
+
+ b.Property("ProviderDisplayName");
+
+ b.Property("UserId")
+ .IsRequired();
+
+ b.HasKey("LoginProvider", "ProviderKey");
+
+ b.HasAnnotation("Relational:TableName", "AspNetUserLogins");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityUserRole", b =>
+ {
+ b.Property("UserId");
+
+ b.Property("RoleId");
+
+ b.HasKey("UserId", "RoleId");
+
+ b.HasAnnotation("Relational:TableName", "AspNetUserRoles");
+ });
+
+ modelBuilder.Entity("Yavsc.Location", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Address")
+ .IsRequired()
+ .HasAnnotation("MaxLength", 512);
+
+ b.Property("Latitude");
+
+ b.Property("Longitude");
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Model.Bank.BankIdentity", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("AccountNumber")
+ .HasAnnotation("MaxLength", 15);
+
+ b.Property("BIC")
+ .HasAnnotation("MaxLength", 15);
+
+ b.Property("BankCode")
+ .HasAnnotation("MaxLength", 5);
+
+ b.Property("BankedKey");
+
+ b.Property("IBAN")
+ .HasAnnotation("MaxLength", 33);
+
+ b.Property("WicketCode")
+ .HasAnnotation("MaxLength", 5);
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Model.Chat.Connection", b =>
+ {
+ b.Property("ConnectionId");
+
+ b.Property("ApplicationUserId");
+
+ b.Property("Connected");
+
+ b.Property("UserAgent");
+
+ b.HasKey("ConnectionId");
+ });
+
+ modelBuilder.Entity("Yavsc.Model.ClientProviderInfo", b =>
+ {
+ b.Property("UserId");
+
+ b.Property("Avatar");
+
+ b.Property("BillingAddressId");
+
+ b.Property("ChatHubConnectionId");
+
+ b.Property("EMail");
+
+ b.Property("Phone");
+
+ b.Property("Rate");
+
+ b.Property("UserName");
+
+ b.HasKey("UserId");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.AccountBalance", b =>
+ {
+ b.Property("UserId");
+
+ b.Property("ContactCredits");
+
+ b.Property("Credits");
+
+ b.HasKey("UserId");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Activity", b =>
+ {
+ b.Property("Code")
+ .HasAnnotation("MaxLength", 512);
+
+ b.Property("ActorDenomination");
+
+ b.Property("Description");
+
+ b.Property("ModeratorGroupName");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasAnnotation("MaxLength", 512);
+
+ b.Property("Photo");
+
+ b.HasKey("Code");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.ApplicationUser", b =>
+ {
+ b.Property("Id");
+
+ b.Property("AccessFailedCount");
+
+ b.Property("Avatar")
+ .HasAnnotation("MaxLength", 512);
+
+ b.Property("BankInfoId");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken();
+
+ b.Property("DedicatedGoogleCalendar");
+
+ b.Property("DiskQuota");
+
+ b.Property("DiskUsage");
+
+ b.Property("Email")
+ .HasAnnotation("MaxLength", 256);
+
+ b.Property("EmailConfirmed");
+
+ b.Property("FullName")
+ .HasAnnotation("MaxLength", 512);
+
+ b.Property("LockoutEnabled");
+
+ b.Property("LockoutEnd");
+
+ b.Property("NormalizedEmail")
+ .HasAnnotation("MaxLength", 256);
+
+ b.Property("NormalizedUserName")
+ .HasAnnotation("MaxLength", 256);
+
+ b.Property("PasswordHash");
+
+ b.Property("PhoneNumber");
+
+ b.Property("PhoneNumberConfirmed");
+
+ b.Property("PostalAddressId");
+
+ b.Property("SecurityStamp");
+
+ b.Property("TwoFactorEnabled");
+
+ b.Property("UserName")
+ .HasAnnotation("MaxLength", 256);
+
+ b.HasKey("Id");
+
+ b.HasIndex("NormalizedEmail")
+ .HasAnnotation("Relational:Name", "EmailIndex");
+
+ b.HasIndex("NormalizedUserName")
+ .HasAnnotation("Relational:Name", "UserNameIndex");
+
+ b.HasAnnotation("Relational:TableName", "AspNetUsers");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Auth.Client", b =>
+ {
+ b.Property("Id");
+
+ b.Property("Active");
+
+ b.Property("DisplayName");
+
+ b.Property("LogoutRedirectUri")
+ .HasAnnotation("MaxLength", 100);
+
+ b.Property("RedirectUri");
+
+ b.Property("RefreshTokenLifeTime");
+
+ b.Property("Secret");
+
+ b.Property("Type");
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Auth.RefreshToken", b =>
+ {
+ b.Property("Id");
+
+ b.Property("ClientId")
+ .IsRequired()
+ .HasAnnotation("MaxLength", 50);
+
+ b.Property("ExpiresUtc");
+
+ b.Property("IssuedUtc");
+
+ b.Property("ProtectedTicket")
+ .IsRequired();
+
+ b.Property("Subject")
+ .IsRequired()
+ .HasAnnotation("MaxLength", 50);
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.BalanceImpact", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("BalanceId")
+ .IsRequired();
+
+ b.Property("ExecDate");
+
+ b.Property("Impact");
+
+ b.Property("Reason")
+ .IsRequired();
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Billing.CommandLine", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("ArticleId");
+
+ b.Property("Count");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasAnnotation("MaxLength", 512);
+
+ b.Property("EstimateId");
+
+ b.Property("EstimateTemplateId");
+
+ b.Property("UnitaryCost");
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Billing.Estimate", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("AttachedFilesString");
+
+ b.Property("AttachedGraphicsString");
+
+ b.Property("ClientId")
+ .IsRequired();
+
+ b.Property("ClientValidationDate");
+
+ b.Property("CommandId");
+
+ b.Property("CommandType");
+
+ b.Property("Description");
+
+ b.Property("OwnerId")
+ .IsRequired();
+
+ b.Property("ProviderValidationDate");
+
+ b.Property("Title");
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Billing.EstimateTemplate", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Description");
+
+ b.Property("OwnerId")
+ .IsRequired();
+
+ b.Property("Title");
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Billing.ExceptionSIREN", b =>
+ {
+ b.Property("SIREN");
+
+ b.HasKey("SIREN");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Blog", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("AuthorId");
+
+ b.Property("Content");
+
+ b.Property("Modified");
+
+ b.Property("Photo");
+
+ b.Property("Posted")
+ .ValueGeneratedOnAdd()
+ .HasAnnotation("Relational:GeneratedValueSql", "LOCALTIMESTAMP");
+
+ b.Property("Rate");
+
+ b.Property("Title");
+
+ b.Property("Visible");
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Booking.BookQuery", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("ClientId")
+ .IsRequired();
+
+ b.Property("CreationDate")
+ .ValueGeneratedOnAdd()
+ .HasAnnotation("Relational:GeneratedValueSql", "LOCALTIMESTAMP");
+
+ b.Property("EventDate");
+
+ b.Property("LocationId");
+
+ b.Property("PerformerId")
+ .IsRequired();
+
+ b.Property("Previsional");
+
+ b.Property("Reason");
+
+ b.Property("ValidationDate");
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Circle", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("ApplicationUserId");
+
+ b.Property("Name");
+
+ b.Property("OwnerId");
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.CircleMember", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("CircleId");
+
+ b.Property("MemberId")
+ .IsRequired();
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Contact", b =>
+ {
+ b.Property("OwnerId");
+
+ b.Property("UserId");
+
+ b.Property("ApplicationUserId");
+
+ b.HasKey("OwnerId", "UserId");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Identity.GoogleCloudMobileDeclaration", b =>
+ {
+ b.Property("DeviceId");
+
+ b.Property("DeclarationDate")
+ .ValueGeneratedOnAdd()
+ .HasAnnotation("Relational:GeneratedValueSql", "LOCALTIMESTAMP");
+
+ b.Property("DeviceOwnerId");
+
+ b.Property("GCMRegistrationId")
+ .IsRequired();
+
+ b.Property("Model");
+
+ b.Property("Platform");
+
+ b.Property("Version");
+
+ b.HasKey("DeviceId");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Market.BaseProduct", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Description");
+
+ b.Property("Discriminator")
+ .IsRequired();
+
+ b.Property("Name");
+
+ b.Property("Public");
+
+ b.HasKey("Id");
+
+ b.HasAnnotation("Relational:DiscriminatorProperty", "Discriminator");
+
+ b.HasAnnotation("Relational:DiscriminatorValue", "BaseProduct");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Market.Service", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("ContextId");
+
+ b.Property("Description");
+
+ b.Property("Name");
+
+ b.Property("Public");
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.OAuth.OAuth2Tokens", b =>
+ {
+ b.Property("UserId");
+
+ b.Property("AccessToken");
+
+ b.Property("Expiration");
+
+ b.Property("ExpiresIn");
+
+ b.Property("RefreshToken");
+
+ b.Property("TokenType");
+
+ b.HasKey("UserId");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.PostTag", b =>
+ {
+ b.Property("PostId");
+
+ b.Property("TagId");
+
+ b.HasKey("PostId", "TagId");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Skill", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Name");
+
+ b.Property("Rate");
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Tag", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Name")
+ .IsRequired();
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Workflow.PerformerProfile", b =>
+ {
+ b.Property("PerformerId");
+
+ b.Property("AcceptGeoLocalization");
+
+ b.Property("AcceptNotifications");
+
+ b.Property("AcceptPublicContact");
+
+ b.Property("Active");
+
+ b.Property("ActivityCode")
+ .IsRequired();
+
+ b.Property("MaxDailyCost");
+
+ b.Property("MinDailyCost");
+
+ b.Property("OfferId");
+
+ b.Property("OrganizationAddressId");
+
+ b.Property("Rate");
+
+ b.Property("SIREN")
+ .IsRequired()
+ .HasAnnotation("MaxLength", 14);
+
+ b.Property("WebSite");
+
+ b.HasKey("PerformerId");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Market.Product", b =>
+ {
+ b.HasBaseType("Yavsc.Models.Market.BaseProduct");
+
+ b.Property("Depth");
+
+ b.Property("Height");
+
+ b.Property("Price");
+
+ b.Property("Weight");
+
+ b.Property("Width");
+
+ b.HasAnnotation("Relational:DiscriminatorValue", "Product");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityRoleClaim", b =>
+ {
+ b.HasOne("Microsoft.AspNet.Identity.EntityFramework.IdentityRole")
+ .WithMany()
+ .HasForeignKey("RoleId");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityUserClaim", b =>
+ {
+ b.HasOne("Yavsc.Models.ApplicationUser")
+ .WithMany()
+ .HasForeignKey("UserId");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityUserLogin", b =>
+ {
+ b.HasOne("Yavsc.Models.ApplicationUser")
+ .WithMany()
+ .HasForeignKey("UserId");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityUserRole", b =>
+ {
+ b.HasOne("Microsoft.AspNet.Identity.EntityFramework.IdentityRole")
+ .WithMany()
+ .HasForeignKey("RoleId");
+
+ b.HasOne("Yavsc.Models.ApplicationUser")
+ .WithMany()
+ .HasForeignKey("UserId");
+ });
+
+ modelBuilder.Entity("Yavsc.Model.Chat.Connection", b =>
+ {
+ b.HasOne("Yavsc.Models.ApplicationUser")
+ .WithMany()
+ .HasForeignKey("ApplicationUserId");
+ });
+
+ modelBuilder.Entity("Yavsc.Model.ClientProviderInfo", b =>
+ {
+ b.HasOne("Yavsc.Location")
+ .WithMany()
+ .HasForeignKey("BillingAddressId");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.AccountBalance", b =>
+ {
+ b.HasOne("Yavsc.Models.ApplicationUser")
+ .WithOne()
+ .HasForeignKey("Yavsc.Models.AccountBalance", "UserId");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.ApplicationUser", b =>
+ {
+ b.HasOne("Yavsc.Model.Bank.BankIdentity")
+ .WithMany()
+ .HasForeignKey("BankInfoId");
+
+ b.HasOne("Yavsc.Location")
+ .WithMany()
+ .HasForeignKey("PostalAddressId");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.BalanceImpact", b =>
+ {
+ b.HasOne("Yavsc.Models.AccountBalance")
+ .WithMany()
+ .HasForeignKey("BalanceId");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Billing.CommandLine", b =>
+ {
+ b.HasOne("Yavsc.Models.Market.BaseProduct")
+ .WithMany()
+ .HasForeignKey("ArticleId");
+
+ b.HasOne("Yavsc.Models.Billing.Estimate")
+ .WithMany()
+ .HasForeignKey("EstimateId");
+
+ b.HasOne("Yavsc.Models.Billing.EstimateTemplate")
+ .WithMany()
+ .HasForeignKey("EstimateTemplateId");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Billing.Estimate", b =>
+ {
+ b.HasOne("Yavsc.Models.Booking.BookQuery")
+ .WithMany()
+ .HasForeignKey("CommandId");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Blog", b =>
+ {
+ b.HasOne("Yavsc.Models.ApplicationUser")
+ .WithMany()
+ .HasForeignKey("AuthorId");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Booking.BookQuery", b =>
+ {
+ b.HasOne("Yavsc.Models.ApplicationUser")
+ .WithMany()
+ .HasForeignKey("ClientId");
+
+ b.HasOne("Yavsc.Location")
+ .WithMany()
+ .HasForeignKey("LocationId");
+
+ b.HasOne("Yavsc.Models.Workflow.PerformerProfile")
+ .WithMany()
+ .HasForeignKey("PerformerId");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Circle", b =>
+ {
+ b.HasOne("Yavsc.Models.ApplicationUser")
+ .WithMany()
+ .HasForeignKey("ApplicationUserId");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.CircleMember", b =>
+ {
+ b.HasOne("Yavsc.Models.Circle")
+ .WithMany()
+ .HasForeignKey("CircleId");
+
+ b.HasOne("Yavsc.Models.ApplicationUser")
+ .WithMany()
+ .HasForeignKey("MemberId");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Contact", b =>
+ {
+ b.HasOne("Yavsc.Models.ApplicationUser")
+ .WithMany()
+ .HasForeignKey("ApplicationUserId");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Identity.GoogleCloudMobileDeclaration", b =>
+ {
+ b.HasOne("Yavsc.Models.ApplicationUser")
+ .WithMany()
+ .HasForeignKey("DeviceOwnerId");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Market.Service", b =>
+ {
+ b.HasOne("Yavsc.Models.Activity")
+ .WithMany()
+ .HasForeignKey("ContextId");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.PostTag", b =>
+ {
+ b.HasOne("Yavsc.Models.Blog")
+ .WithMany()
+ .HasForeignKey("PostId");
+ });
+
+ modelBuilder.Entity("Yavsc.Models.Workflow.PerformerProfile", b =>
+ {
+ b.HasOne("Yavsc.Models.Activity")
+ .WithMany()
+ .HasForeignKey("ActivityCode");
+
+ b.HasOne("Yavsc.Models.Market.Service")
+ .WithMany()
+ .HasForeignKey("OfferId");
+
+ b.HasOne("Yavsc.Location")
+ .WithMany()
+ .HasForeignKey("OrganizationAddressId");
+
+ b.HasOne("Yavsc.Models.ApplicationUser")
+ .WithMany()
+ .HasForeignKey("PerformerId");
+ });
+ }
+ }
+}
diff --git a/Yavsc/Migrations/20161209121035_bookQueryReason.cs b/Yavsc/Migrations/20161209121035_bookQueryReason.cs
new file mode 100644
index 00000000..d1126ce3
--- /dev/null
+++ b/Yavsc/Migrations/20161209121035_bookQueryReason.cs
@@ -0,0 +1,276 @@
+using Microsoft.Data.Entity.Migrations;
+
+namespace Yavsc.Migrations
+{
+ public partial class bookQueryReason : Migration
+ {
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropForeignKey(name: "FK_IdentityRoleClaim_IdentityRole_RoleId", table: "AspNetRoleClaims");
+ migrationBuilder.DropForeignKey(name: "FK_IdentityUserClaim_ApplicationUser_UserId", table: "AspNetUserClaims");
+ migrationBuilder.DropForeignKey(name: "FK_IdentityUserLogin_ApplicationUser_UserId", table: "AspNetUserLogins");
+ migrationBuilder.DropForeignKey(name: "FK_IdentityUserRole_IdentityRole_RoleId", table: "AspNetUserRoles");
+ migrationBuilder.DropForeignKey(name: "FK_IdentityUserRole_ApplicationUser_UserId", table: "AspNetUserRoles");
+ 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_BookQuery_ApplicationUser_ClientId", table: "BookQuery");
+ migrationBuilder.DropForeignKey(name: "FK_BookQuery_PerformerProfile_PerformerId", table: "BookQuery");
+ 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_PerformerProfile_Activity_ActivityCode", table: "PerformerProfile");
+ migrationBuilder.DropForeignKey(name: "FK_PerformerProfile_Location_OrganizationAddressId", table: "PerformerProfile");
+ migrationBuilder.DropForeignKey(name: "FK_PerformerProfile_ApplicationUser_PerformerId", table: "PerformerProfile");
+ migrationBuilder.AddColumn(
+ name: "Reason",
+ table: "BookQuery",
+ nullable: true);
+ migrationBuilder.AddForeignKey(
+ name: "FK_IdentityRoleClaim_IdentityRole_RoleId",
+ table: "AspNetRoleClaims",
+ column: "RoleId",
+ principalTable: "AspNetRoles",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ migrationBuilder.AddForeignKey(
+ name: "FK_IdentityUserClaim_ApplicationUser_UserId",
+ table: "AspNetUserClaims",
+ column: "UserId",
+ principalTable: "AspNetUsers",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ migrationBuilder.AddForeignKey(
+ name: "FK_IdentityUserLogin_ApplicationUser_UserId",
+ table: "AspNetUserLogins",
+ column: "UserId",
+ principalTable: "AspNetUsers",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ migrationBuilder.AddForeignKey(
+ name: "FK_IdentityUserRole_IdentityRole_RoleId",
+ table: "AspNetUserRoles",
+ column: "RoleId",
+ principalTable: "AspNetRoles",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ migrationBuilder.AddForeignKey(
+ name: "FK_IdentityUserRole_ApplicationUser_UserId",
+ table: "AspNetUserRoles",
+ column: "UserId",
+ principalTable: "AspNetUsers",
+ 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_BookQuery_ApplicationUser_ClientId",
+ table: "BookQuery",
+ column: "ClientId",
+ principalTable: "AspNetUsers",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ migrationBuilder.AddForeignKey(
+ name: "FK_BookQuery_PerformerProfile_PerformerId",
+ table: "BookQuery",
+ column: "PerformerId",
+ principalTable: "PerformerProfile",
+ principalColumn: "PerformerId",
+ 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_PerformerProfile_Activity_ActivityCode",
+ table: "PerformerProfile",
+ 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);
+ }
+
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropForeignKey(name: "FK_IdentityRoleClaim_IdentityRole_RoleId", table: "AspNetRoleClaims");
+ migrationBuilder.DropForeignKey(name: "FK_IdentityUserClaim_ApplicationUser_UserId", table: "AspNetUserClaims");
+ migrationBuilder.DropForeignKey(name: "FK_IdentityUserLogin_ApplicationUser_UserId", table: "AspNetUserLogins");
+ migrationBuilder.DropForeignKey(name: "FK_IdentityUserRole_IdentityRole_RoleId", table: "AspNetUserRoles");
+ migrationBuilder.DropForeignKey(name: "FK_IdentityUserRole_ApplicationUser_UserId", table: "AspNetUserRoles");
+ 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_BookQuery_ApplicationUser_ClientId", table: "BookQuery");
+ migrationBuilder.DropForeignKey(name: "FK_BookQuery_PerformerProfile_PerformerId", table: "BookQuery");
+ 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_PerformerProfile_Activity_ActivityCode", table: "PerformerProfile");
+ migrationBuilder.DropForeignKey(name: "FK_PerformerProfile_Location_OrganizationAddressId", table: "PerformerProfile");
+ migrationBuilder.DropForeignKey(name: "FK_PerformerProfile_ApplicationUser_PerformerId", table: "PerformerProfile");
+ migrationBuilder.DropColumn(name: "Reason", table: "BookQuery");
+ migrationBuilder.AddForeignKey(
+ name: "FK_IdentityRoleClaim_IdentityRole_RoleId",
+ table: "AspNetRoleClaims",
+ column: "RoleId",
+ principalTable: "AspNetRoles",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Restrict);
+ migrationBuilder.AddForeignKey(
+ name: "FK_IdentityUserClaim_ApplicationUser_UserId",
+ table: "AspNetUserClaims",
+ column: "UserId",
+ principalTable: "AspNetUsers",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Restrict);
+ migrationBuilder.AddForeignKey(
+ name: "FK_IdentityUserLogin_ApplicationUser_UserId",
+ table: "AspNetUserLogins",
+ column: "UserId",
+ principalTable: "AspNetUsers",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Restrict);
+ migrationBuilder.AddForeignKey(
+ name: "FK_IdentityUserRole_IdentityRole_RoleId",
+ table: "AspNetUserRoles",
+ column: "RoleId",
+ principalTable: "AspNetRoles",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Restrict);
+ migrationBuilder.AddForeignKey(
+ name: "FK_IdentityUserRole_ApplicationUser_UserId",
+ table: "AspNetUserRoles",
+ column: "UserId",
+ principalTable: "AspNetUsers",
+ 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_BookQuery_ApplicationUser_ClientId",
+ table: "BookQuery",
+ column: "ClientId",
+ principalTable: "AspNetUsers",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Restrict);
+ migrationBuilder.AddForeignKey(
+ name: "FK_BookQuery_PerformerProfile_PerformerId",
+ table: "BookQuery",
+ column: "PerformerId",
+ principalTable: "PerformerProfile",
+ principalColumn: "PerformerId",
+ 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_PerformerProfile_Activity_ActivityCode",
+ table: "PerformerProfile",
+ 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);
+ }
+ }
+}
diff --git a/Yavsc/Migrations/ApplicationDbContextModelSnapshot.cs b/Yavsc/Migrations/ApplicationDbContextModelSnapshot.cs
index f9153cd7..3c7b4b91 100644
--- a/Yavsc/Migrations/ApplicationDbContextModelSnapshot.cs
+++ b/Yavsc/Migrations/ApplicationDbContextModelSnapshot.cs
@@ -448,6 +448,8 @@ namespace Yavsc.Migrations
b.Property("Previsional");
+ b.Property("Reason");
+
b.Property("ValidationDate");
b.HasKey("Id");
diff --git a/Yavsc/Models/Booking/BookQuery.cs b/Yavsc/Models/Booking/BookQuery.cs
index 1e69785a..012db4b0 100644
--- a/Yavsc/Models/Booking/BookQuery.cs
+++ b/Yavsc/Models/Booking/BookQuery.cs
@@ -25,7 +25,9 @@ namespace Yavsc.Models.Booking
get;
set;
}
-
+
+ public string Reason { get; set; }
+
public BookQuery()
{
}
diff --git a/Yavsc/Models/Messaging/BookQueryProviderInfo.cs b/Yavsc/Models/Messaging/BookQueryProviderInfo.cs
index 61997ee0..3e60d194 100644
--- a/Yavsc/Models/Messaging/BookQueryProviderInfo.cs
+++ b/Yavsc/Models/Messaging/BookQueryProviderInfo.cs
@@ -12,5 +12,7 @@ namespace Yavsc.Model
public DateTime EventDate { get; set; }
public decimal? Previsional { get; set; }
+
+ public string Reason { get; set; }
}
}
diff --git a/Yavsc/Resources/Yavsc.Resources.YavscLocalisation.en.resx b/Yavsc/Resources/Yavsc.Resources.YavscLocalisation.en.resx
index 1d1d1187..f4cc63f3 100644
--- a/Yavsc/Resources/Yavsc.Resources.YavscLocalisation.en.resx
+++ b/Yavsc/Resources/Yavsc.Resources.YavscLocalisation.en.resx
@@ -197,6 +197,7 @@
Please, use a date in the future as starting date.
Restricted area
from
+ Tell more, below, about your query
Google could'nt identify this place
Google calendar
Google error : {0}
diff --git a/Yavsc/Resources/Yavsc.Resources.YavscLocalisation.fr.resx b/Yavsc/Resources/Yavsc.Resources.YavscLocalisation.fr.resx
index ba0b5098..08f9bce8 100644
--- a/Yavsc/Resources/Yavsc.Resources.YavscLocalisation.fr.resx
+++ b/Yavsc/Resources/Yavsc.Resources.YavscLocalisation.fr.resx
@@ -218,6 +218,7 @@
Nom complet
L'envoi du message push a échoué
Message push envoyé
+ Dites en plus, ci àprès, à propos de cet évennement
Google n'a pas pu identifier ce lieu
Agenda Google
Erreur Google : {0}
@@ -376,4 +377,6 @@
Vos publications
Votre profile
Votre messge a été envoyé
+ Dites en plus, ci àprès, à propos de cet évennement
+
diff --git a/Yavsc/ViewModels/Account/Me.cs b/Yavsc/ViewModels/Account/Me.cs
index 4b0e498d..cd6bea20 100644
--- a/Yavsc/ViewModels/Account/Me.cs
+++ b/Yavsc/ViewModels/Account/Me.cs
@@ -30,7 +30,8 @@ namespace Yavsc.Models.Auth
public string Address { get; set; }
}
-public class MyUpdate {
+public class UserInfo {
+ public string UserId { get; set; }
public string UserName { get; set; }
public string Avatar { get; set; }
diff --git a/Yavsc/ViewModels/Administration/AdminViewModel.cs b/Yavsc/ViewModels/Administration/AdminViewModel.cs
new file mode 100644
index 00000000..24bc52f4
--- /dev/null
+++ b/Yavsc/ViewModels/Administration/AdminViewModel.cs
@@ -0,0 +1,9 @@
+
+namespace Yavsc.ViewModels.Administration {
+
+public class AdminViewModel {
+ public RoleInfo [] Roles { get; set; }
+ public int AdminCount { get; set; }
+ public bool YouAreAdmin { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/Yavsc/ViewModels/Administration/RoleInfo.cs b/Yavsc/ViewModels/Administration/RoleInfo.cs
new file mode 100644
index 00000000..86bddde1
--- /dev/null
+++ b/Yavsc/ViewModels/Administration/RoleInfo.cs
@@ -0,0 +1,22 @@
+using System.Linq;
+using Microsoft.AspNet.Identity.EntityFramework;
+
+namespace Yavsc.ViewModels.Administration
+{
+ public class RoleInfo
+ {
+ public RoleInfo ()
+ {
+
+ }
+ public RoleInfo ( IdentityRole role)
+ {
+ Name = role.Name;
+ Id = role.Id;
+ Users = role.Users.Select(u => u.UserId).ToArray();
+ }
+ public string Id { get; set; }
+ public string Name { get; set; }
+ public string[] Users { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/Yavsc/ViewModels/Administration/RoleUserCollection.cs b/Yavsc/ViewModels/Administration/RoleUserCollection.cs
new file mode 100644
index 00000000..93de88a8
--- /dev/null
+++ b/Yavsc/ViewModels/Administration/RoleUserCollection.cs
@@ -0,0 +1,15 @@
+using Yavsc.Models.Auth;
+
+namespace Yavsc.ViewModels.Administration
+{
+ public class RoleUserCollection
+ {
+ public RoleUserCollection()
+ {
+
+ }
+ public string Id { get; set; }
+ public string Name { get; set; }
+ public UserInfo[] Users { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/Yavsc/Views/Administration/Index.cshtml b/Yavsc/Views/Administration/Index.cshtml
new file mode 100644
index 00000000..a6ea5893
--- /dev/null
+++ b/Yavsc/Views/Administration/Index.cshtml
@@ -0,0 +1,22 @@
+@model AdminViewModel
+
+@{
+ ViewBag.Title = SR["Administration"];
+}
+
+@ViewBag.Title
+
+Rôles :
+
+@foreach (var role in Model.Roles) {
+- @Html.ActionLink(role.Name,"Role",new { id=role.Id }) (@role.Users.Length membres)
+}
+
+
+
+Nombre d'administrateurs :
+@Model.AdminCount
+
+
+Vous êtes administrateur: @(Model.YouAreAdmin?"Oui":"Non")
+
\ No newline at end of file
diff --git a/Yavsc/Views/Administration/Role.cshtml b/Yavsc/Views/Administration/Role.cshtml
new file mode 100644
index 00000000..c93f800d
--- /dev/null
+++ b/Yavsc/Views/Administration/Role.cshtml
@@ -0,0 +1,14 @@
+@model RoleUserCollection
+@{
+ ViewBag.Title = SR["Role"]+" "+Model.Name;
+}
+
+@ViewBag.Title
+
+
+@foreach (var user in Model.Users) {
+ -
+ @user.UserName
+
+}
+
diff --git a/Yavsc/Views/Blogspot/Edit.cshtml b/Yavsc/Views/Blogspot/Edit.cshtml
index adc374ce..5a23a2df 100644
--- a/Yavsc/Views/Blogspot/Edit.cshtml
+++ b/Yavsc/Views/Blogspot/Edit.cshtml
@@ -39,9 +39,7 @@