- GUI
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -263,3 +263,5 @@ __pycache__/
|
|||||||
SeniorAssistant/SeniorAssistant/wwwroot/*
|
SeniorAssistant/SeniorAssistant/wwwroot/*
|
||||||
/SeniorAssistant/Controllers/TestController.cs
|
/SeniorAssistant/Controllers/TestController.cs
|
||||||
/SeniorAssistant/Views/Test/*
|
/SeniorAssistant/Views/Test/*
|
||||||
|
/SeniorAssistant/Views/Home/Calendar.cshtml
|
||||||
|
/SeniorAssistant/Views/Home/Calendar.cshtml.cs
|
||||||
|
|||||||
@@ -94,12 +94,12 @@ namespace IdentityDemo.Controllers
|
|||||||
};
|
};
|
||||||
return await _login(user.Username, user.Password);
|
return await _login(user.Username, user.Password);
|
||||||
}
|
}
|
||||||
catch
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
return Json(new JsonResponse()
|
return Json(new JsonResponse()
|
||||||
{
|
{
|
||||||
Success = false,
|
Success = false,
|
||||||
Message = UsernameDupl
|
Message = e.Message
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -86,16 +86,22 @@ namespace SeniorAssistant.Controllers
|
|||||||
[Route("Forgot")]
|
[Route("Forgot")]
|
||||||
public IActionResult Forgot(string username = "")
|
public IActionResult Forgot(string username = "")
|
||||||
{
|
{
|
||||||
|
if (IsLogged())
|
||||||
|
{
|
||||||
|
return RedirectToAction("Profile", "Home", GetUser(HttpContext.Session.GetString(Username)));
|
||||||
|
}
|
||||||
|
|
||||||
var forgot = Db.Forgot.Where(f => f.Username.Equals(username)).FirstOrDefault();
|
var forgot = Db.Forgot.Where(f => f.Username.Equals(username)).FirstOrDefault();
|
||||||
return CheckUnAuthorized("Forgot", forgot);
|
if (forgot == null)
|
||||||
|
return View("Login", "Utente non esiste");
|
||||||
|
return View("Forgot", forgot);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected IActionResult CheckAuthorized(string view, object model = null)
|
protected IActionResult CheckAuthorized(string view, object model = null)
|
||||||
{
|
{
|
||||||
if (!IsLogged())
|
if (!IsLogged())
|
||||||
{
|
{
|
||||||
view = "Login";
|
return RedirectToAction("Login", "Home", "/" + view);
|
||||||
model = "/" + view;
|
|
||||||
}
|
}
|
||||||
return View(view, model);
|
return View(view, model);
|
||||||
}
|
}
|
||||||
@@ -104,8 +110,7 @@ namespace SeniorAssistant.Controllers
|
|||||||
{
|
{
|
||||||
if (IsLogged())
|
if (IsLogged())
|
||||||
{
|
{
|
||||||
view = "Profile";
|
return RedirectToAction("Profile", "Home", GetUser(HttpContext.Session.GetString(Username)));
|
||||||
model = GetUser(HttpContext.Session.GetString(Username));
|
|
||||||
}
|
}
|
||||||
return View(view, model);
|
return View(view, model);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -149,11 +149,11 @@ namespace SeniorAssistant
|
|||||||
List<Doctor> docs = db.Doctors.ToListAsync().Result;
|
List<Doctor> docs = db.Doctors.ToListAsync().Result;
|
||||||
if (docs.Count == 0)
|
if (docs.Count == 0)
|
||||||
{
|
{
|
||||||
users.Add(new User { Name = "Alfredo", LastName = "Parise", Email = "alfred.pary@libero.it", Username = "alfredigno", Password = "alfy" });
|
users.Add(new User { Name = "Alfredo", LastName = "Parise", Email = "alfred.pary@libero.it", Username = "alfredigno", Password = "alfy", Avatar = "/uploads/default.jpg" });
|
||||||
users.Add(new User { Name = "Edoardo", LastName = "Marzio", Email = "edo.marzio@libero.it", Username = "marzietto", Password = "edo64" });
|
users.Add(new User { Name = "Edoardo", LastName = "Marzio", Email = "edo.marzio@libero.it", Username = "marzietto", Password = "edo64", Avatar = "/uploads/default.jpg" });
|
||||||
|
|
||||||
docs.Add(new Doctor { Username = "alfredigno", Location = "Brasile" });
|
docs.Add(new Doctor { Username = "alfredigno", Location = "Brasile", PhoneNumber = "+0 123456789" });
|
||||||
docs.Add(new Doctor { Username = "marzietto", Location = "Uganda" });
|
docs.Add(new Doctor { Username = "marzietto", Location = "Uganda", PhoneNumber = "+9 87654321" });
|
||||||
|
|
||||||
foreach (var doc in docs)
|
foreach (var doc in docs)
|
||||||
db.InsertOrReplace(doc);
|
db.InsertOrReplace(doc);
|
||||||
@@ -169,7 +169,7 @@ namespace SeniorAssistant
|
|||||||
for (count=0; count<names.Length; count++)
|
for (count=0; count<names.Length; count++)
|
||||||
{
|
{
|
||||||
var username = baseUsername + count;
|
var username = baseUsername + count;
|
||||||
users.Add(new User { Name = names[count], LastName = lastnames[count], Username = username, Password = username, Email = username + "@email.st" });
|
users.Add(new User { Name = names[count], LastName = lastnames[count], Username = username, Password = username, Email = username + "@email.st", Avatar = "/uploads/default.jpg" });
|
||||||
patients.Add(new Patient { Username = username, Doctor = docs[rnd.Next(docs.Count)].Username });
|
patients.Add(new Patient { Username = username, Doctor = docs[rnd.Next(docs.Count)].Username });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,30 @@
|
|||||||
@model Forgot
|
@model Forgot
|
||||||
|
|
||||||
<p>Se indovini la risposta allora verrai loggato. Li poi potrai modificare la password.</p>
|
<div class="col-md-4"></div>
|
||||||
<label>Domanda di sicurezza: </label><p>@Model.Question</p>
|
<div class="col-md-4">
|
||||||
<label>Risposta: </label><input id="answer" type="text" placeholder="Risposta"/>
|
<div class="box box-info">
|
||||||
<p id="error"></p>
|
<div class="box-header with-border">
|
||||||
<button id="send-answ">Invia</button>
|
<h3 class="box-title">Accesso tramite domanda di sicurezza</h3>
|
||||||
|
</div>
|
||||||
|
<div class="form-horizontal">
|
||||||
|
<div class="box-body">
|
||||||
|
<p>Se indovini la risposta allora verrai loggato. Li poi potrai modificare la password.</p>
|
||||||
|
<div>
|
||||||
|
<p class="">Domanda di sicurezza: <strong>@Model.Question</strong> </p>
|
||||||
|
|
||||||
|
<label>Risposta: </label>
|
||||||
|
<input id="answer" type="text" placeholder="Risposta" />
|
||||||
|
<input type="button" class="btn btn-default" id="send-answ" value="Invia" />
|
||||||
|
</div>
|
||||||
|
<p id="error" class="login-box-msg text-red"></p>
|
||||||
|
</div>
|
||||||
|
<div class="box-footer">
|
||||||
|
<button type="button" class="btn btn-info">@Html.ActionLink("Torna al login", "Login")</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4"></div>
|
||||||
<script>
|
<script>
|
||||||
$("#send-answ").on("click", function () {
|
$("#send-answ").on("click", function () {
|
||||||
var answer = $("#answer").val();
|
var answer = $("#answer").val();
|
||||||
|
|||||||
@@ -1,36 +1,76 @@
|
|||||||
@model string
|
@model string
|
||||||
|
|
||||||
<div class="content">
|
@if (Model != null)
|
||||||
@if (Model != null)
|
{
|
||||||
|
var m = Model;
|
||||||
|
if (Model.StartsWith("/"))
|
||||||
{
|
{
|
||||||
<p class="text-red box-title">Per poter accedere alla pagina [@Model] e' necessario essere loggati</p>
|
m = "Per poter accedere alla pagina[" + Model + "] e' necessario essere loggati";
|
||||||
}
|
}
|
||||||
<ul style="list-style-type:none">
|
<div class="col-md-4"></div>
|
||||||
<li class="user-header">
|
<p class="text-red box-title">@m</p>
|
||||||
<input type="text" id="username" placeholder="username" />
|
}
|
||||||
<input type="password" id="password" placeholder="password" />
|
|
||||||
<div>
|
|
||||||
<button class="btn-default btn btn-flat" id="login-btn">Login</button>
|
|
||||||
</div>
|
|
||||||
<p id="msg" class="login-box-msg"></p>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<button id="forgot">Dimanticato la passw?</button>
|
|
||||||
<form id="div-forgot" style="display:none" action="/Forgot" method="get">
|
|
||||||
<label>Username</label><input name="username" type="text" />
|
|
||||||
<input type="submit" id="ok-forgot" value="OK" />
|
|
||||||
</form>
|
|
||||||
|
|
||||||
@Html.ActionLink("Oppure registrati", "Register")
|
<div class="col-md-4"></div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<!-- Login Form -->
|
||||||
|
<div class="box box-info">
|
||||||
|
<div class="box-header with-border">
|
||||||
|
<h3 class="box-title">Login</h3>
|
||||||
|
</div>
|
||||||
|
<!-- /.box-header -->
|
||||||
|
<!-- form start -->
|
||||||
|
<div class="form-horizontal">
|
||||||
|
<div class="box-body">
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-2 control-label">Username</label>
|
||||||
|
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input type="text" class="form-control" id="username" placeholder="Username" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-2 control-label">Password</label>
|
||||||
|
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input type="password" class="form-control" id="password" placeholder="Password" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /.box-body -->
|
||||||
|
<div class="box-footer">
|
||||||
|
<input type="reset" class="btn btn-default" value="Svuota" />
|
||||||
|
<input type="submit" class="btn btn-info pull-right" id="login-btn" value="Login" />
|
||||||
|
<p id="msg" class="login-box-msg"></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- /.box-footer -->
|
||||||
|
</div>
|
||||||
|
<div class="box-footer">
|
||||||
|
<button type="button" id="forgot" class="btn btn-default">Passsword dimenticata</button>
|
||||||
|
<button type="button" class="btn btn-info pull-right">@Html.ActionLink("Registrati", "Register")</button>
|
||||||
|
|
||||||
|
<br />
|
||||||
|
<form id="div-forgot" style="display:none" action="/Forgot" method="get">
|
||||||
|
<div class="box-body">
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-2 control-label">Username</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input type="text" class="form-control" name="username"><br />
|
||||||
|
<input class="btn btn-default" type="submit" id="ok-forgot" value="Recupera password" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /.box -->
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-md-4"></div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
$("#forgot").on("click", function () {
|
$("#forgot").on("click", function () {
|
||||||
$("#div-forgot").css("display", "block");
|
$("#div-forgot").toggle();
|
||||||
});
|
|
||||||
|
|
||||||
$("#ok-forgot").on("click", function () {
|
|
||||||
$("#div-forgot").css("display", "block");
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#login-btn").on("click", function () {
|
$("#login-btn").on("click", function () {
|
||||||
|
|||||||
@@ -5,7 +5,8 @@
|
|||||||
|
|
||||||
@{
|
@{
|
||||||
ViewBag.Title = "Hello Razor";
|
ViewBag.Title = "Hello Razor";
|
||||||
string username = HttpContextAccessor.HttpContext.Session.GetString("username");
|
var session = HttpContextAccessor.HttpContext.Session;
|
||||||
|
var username = session.GetString("username");
|
||||||
var db = dbFactory.Create();
|
var db = dbFactory.Create();
|
||||||
var MaxMessages = 20;
|
var MaxMessages = 20;
|
||||||
var messages = (from m in db.Messages
|
var messages = (from m in db.Messages
|
||||||
@@ -16,45 +17,90 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
<div class="content">
|
<div class="content">
|
||||||
@if (messages.Count() == 0)
|
<div class="row">
|
||||||
{
|
<div class="col-md-12">
|
||||||
<p class="text-red">Non hai messaggi</p>
|
<div class="box box-primary direct-chat direct-chat-primary">
|
||||||
}
|
<div class="box-header with-border">
|
||||||
else
|
<h3 class="box-title">Messaggi con @Model.Name @Model.LastName</h3>
|
||||||
{
|
</div>
|
||||||
<h3 class="text-bold">Messaggi con @Model.Name @Model.LastName</h3>
|
<div class="box-body">
|
||||||
|
<!-- Conversations are loaded here -->
|
||||||
foreach (var message in messages)
|
<div class="direct-chat-messages">
|
||||||
{
|
@if (messages.Count() == 0)
|
||||||
if (message.Seen == default && message.Receiver.Equals(username))
|
{
|
||||||
{
|
<p class="text-red">Non hai messaggi</p>
|
||||||
message.Seen = DateTime.Now;
|
}
|
||||||
db.Update(message);
|
else
|
||||||
}
|
{
|
||||||
<div>
|
foreach (var message in messages)
|
||||||
@if (message.Receiver.Equals(username))
|
{
|
||||||
{
|
if (message.Seen == default && message.Receiver.Equals(username))
|
||||||
<div class="pull-left"></div>
|
{
|
||||||
<div class="pull-right-container bg-light-blue">
|
message.Seen = DateTime.Now;
|
||||||
<span style="white-space: pre-line" class="">@message.Body</span>
|
db.Update(message);
|
||||||
<p class="text-aqua">@message.Seen</p>
|
}
|
||||||
|
<div>
|
||||||
|
@if (message.Receiver.Equals(username))
|
||||||
|
{
|
||||||
|
<!-- Message. Default to the left -->
|
||||||
|
<div class="row">
|
||||||
|
<div class="pull-left direct-chat-msg col-md-6">
|
||||||
|
<div class="direct-chat-info clearfix">
|
||||||
|
<span class="direct-chat-name pull-left">@Model.LastName</span>
|
||||||
|
<span class="direct-chat-timestamp pull-right">@message.Time</span>
|
||||||
|
</div>
|
||||||
|
<!-- /.direct-chat-info -->
|
||||||
|
<img class="direct-chat-img" src="@Model.Avatar" alt="User image">
|
||||||
|
<div class="direct-chat-text">
|
||||||
|
@message.Body
|
||||||
|
</div>
|
||||||
|
<!-- /.direct-chat-text -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<!-- Message to the right -->
|
||||||
|
<div class="row">
|
||||||
|
<div class="pull-right direct-chat-msg right col-md-6">
|
||||||
|
<div class="direct-chat-info clearfix">
|
||||||
|
<span class="direct-chat-name pull-right">Tu</span>
|
||||||
|
<span class="direct-chat-timestamp pull-left">@message.Time</span>
|
||||||
|
</div>
|
||||||
|
<!-- /.direct-chat-info -->
|
||||||
|
<img class="direct-chat-img" src="@session.GetString("avatar")" alt="User image">
|
||||||
|
<div class="direct-chat-text">
|
||||||
|
@message.Body
|
||||||
|
</div>
|
||||||
|
<!-- /.direct-chat-text -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
}
|
</div>
|
||||||
else
|
<!-- /.box-body -->
|
||||||
{
|
<div class="box-footer">
|
||||||
<div class="pull-right-container bg-green-gradient">
|
<form action="#" method="post">
|
||||||
<div style="white-space: pre-line" class="">@message.Body</div>
|
<div class="input-group">
|
||||||
<p class="text-aqua">@message.Seen</p>
|
<input type="text"id="res-message" name="message" placeholder="Scrivi un messaggio..." class="form-control">
|
||||||
</div>
|
<span class="input-group-btn">
|
||||||
<div class="pull-right"></div>
|
<button type="submit" id="btn-send-message" class="btn btn-primary btn-flat">Spedisci</button>
|
||||||
}
|
</span>
|
||||||
|
</div>
|
||||||
|
<p id="message-error" class="text-red"></p>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<!-- /.box-footer-->
|
||||||
</div>
|
</div>
|
||||||
}
|
<!--/.direct-chat -->
|
||||||
}
|
</div>
|
||||||
<div class="pull-right">
|
</div>
|
||||||
<textarea id="res-message" class="progress-text" placeholder="Scrivi qui per scrivere un messaggio"></textarea>
|
|
||||||
<button id="btn-send-message">Invia</button>
|
<div class="pull-right col-md-4">
|
||||||
<p id="message-error" class="text-red"></p>
|
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
$("#btn-send-message").on("click", function () {
|
$("#btn-send-message").on("click", function () {
|
||||||
|
|||||||
@@ -2,132 +2,321 @@
|
|||||||
@inject IDataContextFactory<SeniorDataContext> dbFactory
|
@inject IDataContextFactory<SeniorDataContext> dbFactory
|
||||||
@model User
|
@model User
|
||||||
|
|
||||||
<div class="content">
|
<section class="content">
|
||||||
<div class="pull-left" , style="width: 50%">
|
<div class="row">
|
||||||
<h2 class="alert-success" style="text-align:center">
|
<div class="col-md-1"></div>
|
||||||
Welcome @Model.Name @Model.LastName
|
<div class="col-md-4">
|
||||||
</h2>
|
<div class="box box-info bg-gray-light" style="border-top-color: darkgray">
|
||||||
name: @Model.Name<br />
|
<div class="box-header with-border">
|
||||||
lastname: @Model.LastName<br />
|
<h3 class="box-title">Dati utente</h3>
|
||||||
email: @Model.Email<br />
|
</div>
|
||||||
</div>
|
<!-- /.box-header -->
|
||||||
|
<!-- form start -->
|
||||||
|
<section class="form-horizontal">
|
||||||
|
<div class="box-body">
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input class="mod-data hide" type="text" value="@Model.Name" id="mod-name" />
|
||||||
|
<input class="old-data" disabled type="text" value="@Model.Name" /><br />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="box pull-right" , style="width: 45%">
|
<div class="form-group">
|
||||||
@if (Model.IsPatient()) // is patient and has doc, must show doc data
|
<div class="col-sm-10">
|
||||||
{
|
<input class="mod-data hide" type="text" value="@Model.LastName" id="mod-last" />
|
||||||
var db = dbFactory.Create();
|
<input class="old-data" disabled type="text" value="@Model.LastName" /><br />
|
||||||
var doctor = (from u in db.Users
|
</div>
|
||||||
join d in db.Doctors on u.Username equals d.Username
|
</div>
|
||||||
where d.Username.Equals(Model.Pat.Doctor)
|
|
||||||
select new { u.Username, u.Name, u.LastName, d.Location }).ToArray().First();
|
|
||||||
|
|
||||||
<p class="text-bold">Dottore: @doctor.Name @doctor.LastName</p>
|
<div class="form-group">
|
||||||
<p class="text-fuchsia">Dove mi puoi trovare? @doctor.Location</p>
|
<div class="col-sm-10">
|
||||||
<textarea class="progress-text" placeholder="Nessuna nuova nota" readonly>@Model.Pat.Notes</textarea>
|
<input class="mod-data hide" type="email" value="@Model.Email" id="mod-email" />
|
||||||
|
<input class="old-data" disabled type="email" value="@Model.Email" /><br />
|
||||||
<a class="" href="/Message/@doctor.Username">Invia un messaggio al tuo dottore</a>
|
</div>
|
||||||
}
|
</div>
|
||||||
else
|
|
||||||
{
|
|
||||||
var db = dbFactory.Create();
|
|
||||||
dynamic[] data;
|
|
||||||
Type type = null;
|
|
||||||
string title = null;
|
|
||||||
var docData = db.Doctors.Where(d => d.Username.Equals(Model.Username)).ToArray().FirstOrDefault();
|
|
||||||
|
|
||||||
if (docData != null) // is DOC
|
@if (Model.IsDoctor())
|
||||||
|
{
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input class="mod-data hide" type="text" value="@Model.Doc.PhoneNumber" id="mod-phone" />
|
||||||
|
<input class="old-data" disabled type="text" value="@Model.Doc.PhoneNumber" /><br />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input class="mod-data hide" type="text" value="@Model.Doc.Schedule" id="mod-schedule" />
|
||||||
|
<input class="old-data" disabled type="number" value="@Model.Doc.Schedule" /><br />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input type="text" value="@Model.Username" disabled /><br />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input class="mod-data hide" type="password" id="mod-pass1" placeholder="Nuova password" /><br />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input class="mod-data hide" type="password" id="mod-pass2" placeholder="Conferma password" /><br />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<div id="image-uploader" style="display:none">
|
||||||
|
<form method="post" enctype="multipart/form-data">
|
||||||
|
<span>Cambia immagine profilo</span>
|
||||||
|
<input type="file" name="files" id="files" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<div class="box-footer">
|
||||||
|
<p id="msg">Lasciare i campi vuoti per non modificare</p>
|
||||||
|
|
||||||
|
<input type="button" class="btn btn-default" value="Premere per modificare" id="btn-mod" />
|
||||||
|
<input class="btn btn-info pull-right" type="button" id="update-user" value="Aggiorna" style="display: none" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
@if (Model.IsPatient()) // is patient and has doc, must show doc data
|
||||||
{
|
{
|
||||||
// see all the patient of the doc
|
var db = dbFactory.Create();
|
||||||
title = "Lista dei pazienti";
|
var doctor = (from u in db.Users
|
||||||
var patients = (from u in db.Users
|
join d in db.Doctors on u.Username equals d.Username
|
||||||
join p in db.Patients on u.Username equals p.Username
|
where d.Username.Equals(Model.Pat.Doctor)
|
||||||
where p.Doctor.Equals(docData.Username)
|
select new { u.Username, u.Name, u.LastName, d.Location }).ToArray().First();
|
||||||
select new { u.Username, u.Name, u.LastName, p.Notes, Profile = "<a href=\\\"/user/" + u.Username + "\\\">Profile</a>" }).ToArray();
|
|
||||||
data = patients;
|
<div class="box box-warning">
|
||||||
type = patients.FirstOrDefault()?.GetType();
|
<div class="box-header with-border">
|
||||||
|
<h3 class="box-title">Contatti con il dottore: <strong>@doctor.Name @doctor.LastName</strong></h3>
|
||||||
|
</div>
|
||||||
|
<!-- /.box-header -->
|
||||||
|
<div class="box-body">
|
||||||
|
<div role="form">
|
||||||
|
<div class="form-group">
|
||||||
|
<h5 class="box-comment">Indirizzo dello studio: <strong>@doctor.Location</strong></h5>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<h5>Recapito telefonico: <strong>+0 00000000 <!--doctor.PhoneNumber --></strong></h5>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="input-group-btn input-group-sm">
|
||||||
|
<a href="#" id="show-schedule" class="btn btn-default">Mostra orari visite</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group hide" id="tab-schedule">
|
||||||
|
<div class="business-hours">
|
||||||
|
<h2 class="title">Orari visite</h2>
|
||||||
|
<ul class="list-unstyled opening-hours">
|
||||||
|
<li>Sunday <span class="pull-right">Closed</span></li>
|
||||||
|
<li>Monday <span class="pull-right">9:00-22:00</span></li>
|
||||||
|
<li>Tuesday <span class="pull-right">9:00-22:00</span></li>
|
||||||
|
<li>Wednesday <span class="pull-right">9:00-22:00</span></li>
|
||||||
|
<li>Thursday <span class="pull-right">9:00-22:00</span></li>
|
||||||
|
<li>Friday <span class="pull-right">9:00-23:30</span></li>
|
||||||
|
<li>Saturday <span class="pull-right">14:00-23:30</span></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label>Note da parte del dottore:</label>
|
||||||
|
<p class="form-control" placeholder="Nessuna nuova nota" style="height:50px">@Model.Pat.Notes</p>
|
||||||
|
<div class="input-group-btn input-group-sm">
|
||||||
|
<a href="/Message/@doctor.Username" class="btn btn-flat btn-info">Scrivi un messaggio</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /.box-body -->
|
||||||
|
</div>
|
||||||
}
|
}
|
||||||
else // is a patient and need to choose a doctor
|
else
|
||||||
{
|
{
|
||||||
// choose which doc you want
|
var db = dbFactory.Create();
|
||||||
title = "Scegli un Doc";
|
dynamic[] data;
|
||||||
var docs = (from u in db.Users
|
Type type = null;
|
||||||
join d in db.Doctors on u.Username equals d.Username
|
string title = null;
|
||||||
select new { u.Username, u.Name, u.LastName, d.Location, Choose = "<a id=\\\"choose-" + u.Username + "\\\" href=#>Scegli</a>" }).ToArray();
|
var docData = db.Doctors.Where(d => d.Username.Equals(Model.Username)).ToArray().FirstOrDefault();
|
||||||
data = docs;
|
|
||||||
type = docs.FirstOrDefault().GetType();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (type != null)
|
if (docData != null) // is DOC
|
||||||
{
|
|
||||||
|
|
||||||
var fields = new List<string>();
|
|
||||||
|
|
||||||
foreach (var field in type.GetProperties())
|
|
||||||
{
|
{
|
||||||
fields.Add(field.Name);
|
// see all the patient of the doc
|
||||||
|
title = "Lista dei pazienti";
|
||||||
|
var patients = (from u in db.Users
|
||||||
|
join p in db.Patients on u.Username equals p.Username
|
||||||
|
where p.Doctor.Equals(docData.Username)
|
||||||
|
select new { u.Username, u.Name, u.LastName, p.Notes, Profile = "<a href=\\\"/user/" + u.Username + "\\\">Visita profilo</a>" }).ToArray();
|
||||||
|
data = patients;
|
||||||
|
type = patients.FirstOrDefault()?.GetType();
|
||||||
|
}
|
||||||
|
else // is a patient and need to choose a doctor
|
||||||
|
{
|
||||||
|
// choose which doc you want
|
||||||
|
title = "Scegli un Doc";
|
||||||
|
var docs = (from u in db.Users
|
||||||
|
join d in db.Doctors on u.Username equals d.Username
|
||||||
|
select new { u.Username, u.Name, u.LastName, d.Location, Choose = "<a id=\\\"choose-" + u.Username + "\\\" href=#>Scegli</a>" }).ToArray();
|
||||||
|
data = docs;
|
||||||
|
type = docs.FirstOrDefault().GetType();
|
||||||
}
|
}
|
||||||
|
|
||||||
<p>@title</p>
|
if (type != null)
|
||||||
<div id="var-table"></div>
|
{
|
||||||
<script>
|
|
||||||
var datas = [
|
|
||||||
@foreach (var el in data)
|
|
||||||
{
|
|
||||||
@:{
|
|
||||||
@foreach (var field in fields)
|
|
||||||
{
|
|
||||||
@field@:: "@Html.Raw(type.GetProperty(field).GetValue(el, null))",
|
|
||||||
}
|
|
||||||
@:},
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
$(document).ready(function () {
|
var fields = new List<string>();
|
||||||
$("#var-table").kendoGrid({
|
|
||||||
dataSource: {
|
foreach (var field in type.GetProperties())
|
||||||
data: datas,
|
{
|
||||||
schema: {
|
fields.Add(field.Name);
|
||||||
model: {
|
}
|
||||||
fields: {
|
|
||||||
@foreach (var field in fields)
|
<p>@title</p>
|
||||||
{
|
<div id="var-table"></div>
|
||||||
@field@: : { type: "@field.GetType().Name" },
|
<script>
|
||||||
|
var datas = [
|
||||||
|
@foreach (var el in data)
|
||||||
|
{
|
||||||
|
@:{
|
||||||
|
@foreach (var field in fields)
|
||||||
|
{
|
||||||
|
@field@:: "@Html.Raw(type.GetProperty(field).GetValue(el, null))",
|
||||||
|
}
|
||||||
|
@:},
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
$(document).ready(function () {
|
||||||
|
$("#var-table").kendoGrid({
|
||||||
|
dataSource: {
|
||||||
|
data: datas,
|
||||||
|
schema: {
|
||||||
|
model: {
|
||||||
|
fields: {
|
||||||
|
@foreach (var field in fields)
|
||||||
|
{
|
||||||
|
@field@: : { type: "@field.GetType().Name" },
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
},
|
scrollable: true,
|
||||||
scrollable: true,
|
sortable: true,
|
||||||
sortable: true,
|
filterable: true,
|
||||||
filterable: true,
|
columns: [
|
||||||
columns: [
|
@foreach (var field in fields)
|
||||||
@foreach (var field in fields)
|
{
|
||||||
{
|
@:{ field: "@field", title: "@field", template: "#=@field#" },
|
||||||
@:{ field: "@field", title: "@field", template: "#=@field#" },
|
|
||||||
}
|
|
||||||
]
|
|
||||||
});
|
|
||||||
@if(docData == null) // choose a doc
|
|
||||||
{
|
|
||||||
<text>
|
|
||||||
$('[id^="choose-"]').on("click", function () {
|
|
||||||
var id = this.id.replace("choose-", '');
|
|
||||||
$.ajax({
|
|
||||||
type: "POST",
|
|
||||||
url: "/Account/_addDoc",
|
|
||||||
data: { doctor: id },
|
|
||||||
success: function (data) {
|
|
||||||
if (data.success) {
|
|
||||||
window.location.reload();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
@if (docData == null) // choose a doc
|
||||||
|
{
|
||||||
|
<text>
|
||||||
|
$('[id^="choose-"]').on("click", function () {
|
||||||
|
var id = this.id.replace("choose-", '');
|
||||||
|
$.ajax({
|
||||||
|
type: "POST",
|
||||||
|
url: "/Account/_addDoc",
|
||||||
|
data: { doctor: id },
|
||||||
|
success: function (data) {
|
||||||
|
if (data.success) {
|
||||||
|
window.location.reload();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
})
|
})
|
||||||
})
|
</text>
|
||||||
</text>
|
}
|
||||||
}
|
});
|
||||||
});
|
</script>
|
||||||
</script>
|
}
|
||||||
}
|
}
|
||||||
}
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</section>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
$(document).ready(function () {
|
||||||
|
$(".opening-hours li").eq(new Date().getDay()).addClass("today");
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#show-schedule").on("click", function () {
|
||||||
|
$("#tab-schedule").toggleClass("hide");
|
||||||
|
});
|
||||||
|
$("#files").kendoUpload({
|
||||||
|
async: {
|
||||||
|
saveUrl: "/Account/_save",
|
||||||
|
autoUpload: true
|
||||||
|
},
|
||||||
|
success: function (data) {
|
||||||
|
if (data.response.success)
|
||||||
|
window.location.reload();
|
||||||
|
else
|
||||||
|
console.log(data.response.message);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#btn-mod").on("click", function () {
|
||||||
|
$(".mod-data").toggleClass("hide");
|
||||||
|
$(".old-data").toggleClass("hide");
|
||||||
|
|
||||||
|
$("#image-uploader").toggle();
|
||||||
|
$("#update-user").toggle();
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#update-user").on("click", function () {
|
||||||
|
var name = $("#mod-name").val();
|
||||||
|
var lastname = $("#mod-last").val();
|
||||||
|
var password = $("#mod-pass1").val();
|
||||||
|
var password2 = $("#mod-pass2").val();
|
||||||
|
var email = $("#mod-email").val();
|
||||||
|
var schedule = $("#mod-schedule").val();
|
||||||
|
var phone = $("#mod-phone").val();
|
||||||
|
if (password != password2) {
|
||||||
|
$("#msg-reg").html("[Le password non coincidono]").show();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
url: "/Account/_modify",
|
||||||
|
data: {
|
||||||
|
User: {
|
||||||
|
Username: "@Model.Username",
|
||||||
|
Name: name,
|
||||||
|
Lastname: lastname,
|
||||||
|
Password: password,
|
||||||
|
Email: email,
|
||||||
|
Schedule: schedule,
|
||||||
|
PhoneNumber: phone
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dataType: "json",
|
||||||
|
type: "POST",
|
||||||
|
success: function (data) {
|
||||||
|
var msg = $("#msg-reg");
|
||||||
|
if (data.success) {
|
||||||
|
window.location.reload();
|
||||||
|
} else {
|
||||||
|
msg.html(data.message).show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
});
|
||||||
|
</script>
|
||||||
@@ -1,21 +1,91 @@
|
|||||||
<ul style="list-style: none">
|
<div class="col-md-4"></div>
|
||||||
<li class="user-header">
|
<div class="col-md-4">
|
||||||
<input type="text" id="regUsername" placeholder="Username" required />
|
<!-- Register Form -->
|
||||||
<input type="text" id="regName" placeholder="Name" />
|
<div class="box box-info">
|
||||||
<input type="text" id="regLastname" placeholder="Lastname" />
|
<div class="box-header with-border">
|
||||||
<input type="password" id="regPassword" placeholder="Password" required />
|
<h3 class="box-title">Registrazione</h3>
|
||||||
<input type="email" id="regEmail" placeholder="Email" required />
|
|
||||||
<input type="text" id="regDoctor" placeholder="Doctor only (543210)" />
|
|
||||||
<input type="text" id="passwQues" placeholder="Domanda di sicurezza" required />
|
|
||||||
<input type="text" id="passwAnsw" placeholder="Risposta di sicurezza" required />
|
|
||||||
<div>
|
|
||||||
<button class="btn-default btn btn-flat" id="register-btn">Register</button>
|
|
||||||
</div>
|
</div>
|
||||||
<p id="msg-reg" class="login-box-msg"></p>
|
<!-- /.box-header -->
|
||||||
</li>
|
<!-- form start -->
|
||||||
</ul>
|
<div class="form-horizontal">
|
||||||
|
<div class="box-body">
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-3 control-label">Username</label>
|
||||||
|
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<input type="text" class="form-control" id="regUsername" placeholder="Username" required />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-3 control-label">Name</label>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<input type="text" class="form-control" id="regName" placeholder="Name" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-3 control-label">Last name</label>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<input class="form-control" type="text" id="regLastname" placeholder="Lastname" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-3 control-label">Password</label>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<input class="form-control" type="password" id="regPassword" placeholder="Password" required />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-3 control-label">Conferma password</label>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<input class="form-control" type="password" id="regPassword2" placeholder="Password" required />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-3 control-label">E-mail</label>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<input class="form-control" type="email" id="regEmail" placeholder="Email" required />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-3 control-label">Code Doctor</label>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<input class="form-control" type="text" id="regDoctor" placeholder="(54328)" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-3 control-label">Domanda di sicurezza</label>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<input class="form-control" type="text" id="passwQues" placeholder="Domanda di sicurezza" required />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-3 control-label">Risposta di sicurezza</label>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<input class="form-control" type="text" id="passwAnsw" placeholder="Risposta di sicurezza" required />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /.box-body -->
|
||||||
|
<div class="box-footer">
|
||||||
|
<input type="reset" class="btn btn-default" />
|
||||||
|
<button class="btn btn-info pull-right" id="register-btn">Register</button>
|
||||||
|
<p id="msg-reg" class="login-box-msg text-red"></p>
|
||||||
|
<button type="button" class="btn btn-info">@Html.ActionLink("Torna al login", "Login")</button>
|
||||||
|
</div>
|
||||||
|
<!-- /.box-footer -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /.box -->
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4"></div>
|
||||||
|
|
||||||
@Html.ActionLink("Oppure fai il login", "Login")
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
$("#register-btn").on("click", function () {
|
$("#register-btn").on("click", function () {
|
||||||
@@ -23,12 +93,18 @@
|
|||||||
var name = $("#regName").val();
|
var name = $("#regName").val();
|
||||||
var lastname = $("#regLastname").val();
|
var lastname = $("#regLastname").val();
|
||||||
var password = $("#regPassword").val();
|
var password = $("#regPassword").val();
|
||||||
|
var password2 = $("#regPassword2").val();
|
||||||
var email = $("#regEmail").val();
|
var email = $("#regEmail").val();
|
||||||
var code = $("#regDoctor").val();
|
var code = $("#regDoctor").val();
|
||||||
|
|
||||||
var quest = $("#passwQues").val();
|
var quest = $("#passwQues").val();
|
||||||
var answ = $("#passwAnsw").val();
|
var answ = $("#passwAnsw").val();
|
||||||
|
|
||||||
|
if (password != password2) {
|
||||||
|
$("#msg-reg").html("[Le password non coincidono]").show();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: "/Account/_register",
|
url: "/Account/_register",
|
||||||
data: {
|
data: {
|
||||||
@@ -54,9 +130,6 @@
|
|||||||
} else {
|
} else {
|
||||||
msg.html(data.message).show();
|
msg.html(data.message).show();
|
||||||
}
|
}
|
||||||
},
|
|
||||||
error: function (xhr, status, error) {
|
|
||||||
alert(error)
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -20,75 +20,137 @@
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
<div>
|
<div>
|
||||||
<input id="hours-data" type="text" placeholder="hours" value="24" />
|
<div class="col-md-3">
|
||||||
<button id="refresh-hours" class="fc-button">Cambia ora</button>
|
<div class="form-group">
|
||||||
|
<div class="input-group">
|
||||||
|
<input id="hours-data" type="text" placeholder="hours" value="24" class="form-control timepicker" />
|
||||||
|
|
||||||
<input id="date-from" type="date" value="@HttpContextAccessor.HttpContext.Request.Query["from"]" />
|
<div class="input-group-addon">
|
||||||
<input id="date-to" type="date" value="@HttpContextAccessor.HttpContext.Request.Query["to"]" />
|
<input type="button" value="Cambia ora" class="no-border" id="refresh-hours">
|
||||||
<button id="refresh-date" class="fc-button">Cambia data</button>
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /.input group -->
|
||||||
|
|
||||||
<label>Mostra dati sottoforma tabella</label>
|
|
||||||
<input type="checkbox" id="show-table" />
|
|
||||||
|
|
||||||
<div id="chart-data"></div>
|
</div>
|
||||||
<div id="grid"></div>
|
<!-- /.form group -->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-1"></div>
|
||||||
|
|
||||||
|
<div class="col-md-6">
|
||||||
|
<!-- Date range -->
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="input-group">
|
||||||
|
<div class="input-group-addon">
|
||||||
|
<i class="fa fa-calendar"></i>
|
||||||
|
</div>
|
||||||
|
<input id="date-from" type="date" value="@HttpContextAccessor.HttpContext.Request.Query["from"]" />
|
||||||
|
<input id="date-to" type="date" value="@HttpContextAccessor.HttpContext.Request.Query["to"]" />
|
||||||
|
<input type="button" id="refresh-date" class="fc-button no-border" value="Cambia data" />
|
||||||
|
</div>
|
||||||
|
<!-- /.input group -->
|
||||||
|
</div>
|
||||||
|
<!-- /.form group -->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@if (isDoc)
|
||||||
|
{
|
||||||
|
<div class="form-group">
|
||||||
|
<form action="" method="get" onsubmit="return confirm('Sicuro di voler rimuovere il paziente?');">
|
||||||
|
<button type="submit" name="removePatient" class="btn btn-default" value="@Model.Username">Rimuovi paziente</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
@if (isDoc)
|
<div class="row"></div>
|
||||||
{
|
<div class="row">
|
||||||
<form action="" method="get" onsubmit="return confirm('Sicuro di voler rimuovere il paziente?');">
|
<div class="col-md-12">
|
||||||
<button type="submit" name="removePatient" class="btn flat-btn" value="@Model.Username">Rimuovi paziente</button>
|
@if (isDoc)
|
||||||
</form>
|
{
|
||||||
<div>
|
<div class="form-group col-md-3">
|
||||||
<textarea id="note-area" placeholder="Scrivi una nota..">@Model.Pat.Notes</textarea>
|
<label>Scrivi una nota per il paziente</label>
|
||||||
<button id="send-note" class="btn">Salva</button>
|
<textarea id="note-area" placeholder="Scrivi una nota.." class="form-control" rows="2">@Model.Pat.Notes</textarea>
|
||||||
<p id="note-error"></p>
|
<button id="send-note" class="btn">Salva</button>
|
||||||
</div>
|
<p id="note-error"></p>
|
||||||
<a class="" href="/Message/@Model.Pat.Username">Invia un messaggio al tuo paziente</a>
|
</div>
|
||||||
<div>
|
<div class="col-md-1"></div>
|
||||||
<p>Inserisci un minimo o massimo valore per il battito cardiaco</p>
|
|
||||||
<p>Se il valore del battito del paziente supera i valori che hai inserito verrai notificato</p>
|
|
||||||
<label>Max:</label>
|
|
||||||
<input id="maxHeart" placeholder="max" value="@Model.Pat.MaxHeart" />
|
|
||||||
<label>Min:</label>
|
|
||||||
<input id="minHeart" placeholder="min" value="@Model.Pat.MinHeart" />
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
$("#send-note").on("click", function () {
|
|
||||||
var text = $("#note-area").val().trim();
|
|
||||||
$.ajax({
|
|
||||||
url: "/Account/_addNote",
|
|
||||||
type: "PUT",
|
|
||||||
data: {
|
|
||||||
Patient: "@Model.Username", Text: text
|
|
||||||
},
|
|
||||||
success: function (data) {
|
|
||||||
$("#note-error").html(data.success ? "Nota salvata" : data.message);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
$("#maxHeart, #minHeart").on("change keyup paste click", function () {
|
|
||||||
onlyNum($(this));
|
|
||||||
});
|
|
||||||
$("#maxHeart, #minHeart").on("blur", function () {
|
|
||||||
var value = parseInt($(this).val());
|
|
||||||
var id = $(this).attr("id");
|
|
||||||
$.ajax({
|
|
||||||
url: "/Account/_" + id + "ToPatient",
|
|
||||||
type: "PUT",
|
|
||||||
data: {
|
|
||||||
Patient: "@Model.Username",
|
|
||||||
Value: value
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
}
|
|
||||||
|
|
||||||
|
<div class="form-group col-md-5">
|
||||||
|
<label>Inserisci un minimo o massimo valore per il battito cardiaco</label>
|
||||||
|
<p>Se il valore del battito del paziente supera i valori che hai inserito verrai notificato</p>
|
||||||
|
<div class="form-group col-md-5">
|
||||||
|
<label>Max:</label>
|
||||||
|
<input id="maxHeart" placeholder="max" value="@Model.Pat.MaxHeart" class="form-control" />
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-5">
|
||||||
|
<label>Min:</label>
|
||||||
|
<input id="minHeart" placeholder="min" value="@Model.Pat.MinHeart" class="form-control" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-1"></div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="input-group-btn input-group-sm">
|
||||||
|
<a href="/Message/@Model.Pat.Username" class="btn btn-flat btn-info">Scrivi a @Model.Name </a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
$("#send-note").on("click", function () {
|
||||||
|
var text = $("#note-area").val().trim();
|
||||||
|
$.ajax({
|
||||||
|
url: "/Account/_addNote",
|
||||||
|
type: "PUT",
|
||||||
|
data: {
|
||||||
|
Patient: "@Model.Username", Text: text
|
||||||
|
},
|
||||||
|
success: function (data) {
|
||||||
|
$("#note-error").html(data.success ? "Nota salvata" : data.message);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
$("#maxHeart, #minHeart").on("change keyup paste click", function () {
|
||||||
|
onlyNum($(this));
|
||||||
|
});
|
||||||
|
$("#maxHeart, #minHeart").on("blur", function () {
|
||||||
|
var value = parseInt($(this).val());
|
||||||
|
var id = $(this).attr("id");
|
||||||
|
$.ajax({
|
||||||
|
url: "/Account/_" + id + "ToPatient",
|
||||||
|
type: "PUT",
|
||||||
|
data: {
|
||||||
|
Patient: "@Model.Username",
|
||||||
|
Value: value
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" id="show-table">
|
||||||
|
Mostra dati sottoforma tabella
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div id="chart-data"></div>
|
||||||
<script>
|
<script>
|
||||||
|
$(function () {
|
||||||
|
$('#reservation').daterangepicker();
|
||||||
|
$('#datepicker').datepicker({
|
||||||
|
autoclose: true
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
function onlyNum(object, numChar = 3) {
|
function onlyNum(object, numChar = 3) {
|
||||||
object.val(object.val().replace(/[^0-9]/g, '').substring(0, numChar));
|
object.val(object.val().replace(/[^0-9]/g, '').substring(0, numChar));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$("#show-table").on("click", function () {
|
||||||
|
$("#refresh-hours").click();
|
||||||
|
});
|
||||||
|
|
||||||
$("#hours-data").on("change keyup paste click", function () {
|
$("#hours-data").on("change keyup paste click", function () {
|
||||||
onlyNum($(this), 2);
|
onlyNum($(this), 2);
|
||||||
});
|
});
|
||||||
@@ -121,13 +183,15 @@ else
|
|||||||
sleepArr.push({ "time": new Date(base_time + i), "value": 1 });
|
sleepArr.push({ "time": new Date(base_time + i), "value": 1 });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if (Object.keys(heartbeat).length == 0
|
if (Object.keys(heartbeat).length == 0
|
||||||
&& Object.keys(steps).length == 0
|
&& Object.keys(steps).length == 0
|
||||||
&& Object.keys(sleep).length == 0)
|
&& Object.keys(sleep).length == 0)
|
||||||
$("#chart-data").html("Nessun dato");
|
$("#chart-data").html("Nessun dato");
|
||||||
else {
|
else {
|
||||||
$("#chart-data").html("");
|
$("#chart-data").html("");
|
||||||
|
if (sleepArr.length == 0)
|
||||||
|
sleepArr.push({ "time": heartbeat[0].time, "value": false });
|
||||||
|
|
||||||
var minDate = Math.min(
|
var minDate = Math.min(
|
||||||
new Date(heartbeat[0].time).getTime(),
|
new Date(heartbeat[0].time).getTime(),
|
||||||
@@ -140,7 +204,7 @@ else
|
|||||||
new Date(steps[steps.length - 1].time).getTime(),
|
new Date(steps[steps.length - 1].time).getTime(),
|
||||||
new Date(sleepArr[sleepArr.length -1].time).getTime()
|
new Date(sleepArr[sleepArr.length -1].time).getTime()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
var allData = [];
|
var allData = [];
|
||||||
for (var delta = 60 * 60 * 1000; minDate < maxDate; minDate += delta) {
|
for (var delta = 60 * 60 * 1000; minDate < maxDate; minDate += delta) {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
<div class="breadcrumb">
|
<div class="breadcrumb">
|
||||||
@Html.ActionLink("Home", "Index", "Home")
|
@Html.ActionLink("Home", "Profile", "Home")
|
||||||
@if (controller != "Home")
|
@if (controller != "Home")
|
||||||
{
|
{
|
||||||
@:> @Html.ActionLink(controller, "Index", controller)
|
@:> @Html.ActionLink(controller, "Index", controller)
|
||||||
|
|||||||
@@ -15,18 +15,6 @@
|
|||||||
<!-- The user image in the menu -->
|
<!-- The user image in the menu -->
|
||||||
<li class="user-header">
|
<li class="user-header">
|
||||||
<img src="@session.GetString("avatar")" class="img-circle" alt="User Image" id="avatar">
|
<img src="@session.GetString("avatar")" class="img-circle" alt="User Image" id="avatar">
|
||||||
<div>
|
|
||||||
<input type="button" class="btn-flat" value="+" id="btn-plus" />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!--<div id="image-uploader" style="display:none">
|
|
||||||
<input name="files" id="files" type="file" />
|
|
||||||
</div>-->
|
|
||||||
<div id="image-uploader" style="display:none">
|
|
||||||
<form method="post" enctype="multipart/form-data">
|
|
||||||
<input type="file" name="files" id="files" />
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
<p>
|
<p>
|
||||||
@session.GetString("name") @session.GetString("lastname") - @session.GetString("role")
|
@session.GetString("name") @session.GetString("lastname") - @session.GetString("role")
|
||||||
<small>@session.GetString("email")</small>
|
<small>@session.GetString("email")</small>
|
||||||
@@ -44,25 +32,6 @@
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
$(document).ready(function () {
|
|
||||||
$("#files").kendoUpload({
|
|
||||||
async: {
|
|
||||||
saveUrl: "/Account/_save",
|
|
||||||
autoUpload: true
|
|
||||||
},
|
|
||||||
success: function (data) {
|
|
||||||
if (data.response.success)
|
|
||||||
window.location.reload();
|
|
||||||
else
|
|
||||||
console.log(data.response.message);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#btn-plus").on("click", function () {
|
|
||||||
$("#image-uploader").toggle();
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#logout-btn").on("click", function () {
|
$("#logout-btn").on("click", function () {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: "/Account/_logout",
|
url: "/Account/_logout",
|
||||||
|
|||||||
@@ -12,9 +12,14 @@
|
|||||||
if (username != null)
|
if (username != null)
|
||||||
{
|
{
|
||||||
var isDoc = session.GetString("role").Equals("doctor");
|
var isDoc = session.GetString("role").Equals("doctor");
|
||||||
|
var isPatient = session.GetString("role").Equals("patient");
|
||||||
var Menu = new List<IMenuItem>();
|
var Menu = new List<IMenuItem>();
|
||||||
Menu.Add(new MenuItem("Profilo", "/"));
|
Menu.Add(new MenuItem("Profilo", "/"));
|
||||||
Menu.Add(new MenuItem("Dati personali", "/user/" + username));
|
|
||||||
|
if(isPatient)
|
||||||
|
{
|
||||||
|
Menu.Add(new MenuItem("Dati personali", "/user/" + username));
|
||||||
|
}
|
||||||
|
|
||||||
<aside class="main-sidebar">
|
<aside class="main-sidebar">
|
||||||
<!-- sidebar: style can be found in sidebar.less -->
|
<!-- sidebar: style can be found in sidebar.less -->
|
||||||
|
|||||||
@@ -22,12 +22,24 @@ scratch. This page gets rid of all links and provides the needed markup only.
|
|||||||
<title>SeniorAssistant @ViewBag.Title</title>
|
<title>SeniorAssistant @ViewBag.Title</title>
|
||||||
<!-- Tell the browser to be responsive to screen width -->
|
<!-- Tell the browser to be responsive to screen width -->
|
||||||
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
|
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
|
||||||
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="~/AdminLTE-2.4.3/bower_components/bootstrap/dist/css/bootstrap.min.css">
|
<link rel="stylesheet" href="~/AdminLTE-2.4.3/bower_components/bootstrap/dist/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="~/AdminLTE-2.4.3/bower_components/fullcalendar/dist/fullcalendar.min.css">
|
||||||
|
<link rel="stylesheet" href="~/AdminLTE-2.4.3/bower_components/fullcalendar/dist/fullcalendar.print.min.css" media="print">
|
||||||
|
<!-- daterange picker -->
|
||||||
|
<link rel="stylesheet" href="~/AdminLTE-2.4.3/bower_components/bootstrap-daterangepicker/daterangepicker.css">
|
||||||
|
<!-- bootstrap datepicker -->
|
||||||
|
<link rel="stylesheet" href="~/AdminLTE-2.4.3/bower_components/bootstrap-datepicker/dist/css/bootstrap-datepicker.min.css">
|
||||||
|
<!-- iCheck for checkboxes and radio inputs -->
|
||||||
|
<link rel="stylesheet" href="~/AdminLTE-2.4.3/plugins/iCheck/all.css">
|
||||||
|
<link rel="stylesheet" href="~/AdminLTE-2.4.3/plugins/timepicker/bootstrap-timepicker.min.css">
|
||||||
<!-- Font Awesome -->
|
<!-- Font Awesome -->
|
||||||
<link rel="stylesheet" href="~/AdminLTE-2.4.3/bower_components/font-awesome/css/font-awesome.min.css">
|
<link rel="stylesheet" href="~/AdminLTE-2.4.3/bower_components/font-awesome/css/font-awesome.min.css">
|
||||||
<!-- Ionicons -->
|
<!-- Ionicons -->
|
||||||
<link rel="stylesheet" href="~/AdminLTE-2.4.3/bower_components/Ionicons/css/ionicons.min.css">
|
<link rel="stylesheet" href="~/AdminLTE-2.4.3/bower_components/Ionicons/css/ionicons.min.css">
|
||||||
<!-- Theme style -->
|
<!-- Theme style -->
|
||||||
|
<link rel="stylesheet" href="~/AdminLTE-2.4.3/plugins/business.css"/>
|
||||||
<link rel="stylesheet" href="~/AdminLTE-2.4.3/dist/css/AdminLTE.min.css">
|
<link rel="stylesheet" href="~/AdminLTE-2.4.3/dist/css/AdminLTE.min.css">
|
||||||
<!-- AdminLTE Skins. We have chosen the skin-blue for this starter
|
<!-- AdminLTE Skins. We have chosen the skin-blue for this starter
|
||||||
page. However, you can choose any other skin. Make sure you
|
page. However, you can choose any other skin. Make sure you
|
||||||
@@ -47,6 +59,16 @@ scratch. This page gets rid of all links and provides the needed markup only.
|
|||||||
|
|
||||||
<script src="~/kendo/@(kendo.Version)/js/jquery.min.js"></script>
|
<script src="~/kendo/@(kendo.Version)/js/jquery.min.js"></script>
|
||||||
<script src="~/kendo/@(kendo.Version)/js/kendo.all.min.js"></script>
|
<script src="~/kendo/@(kendo.Version)/js/kendo.all.min.js"></script>
|
||||||
|
<script src="~/AdminLTE-2.4.3/bower_components/moment/moment.js"></script>
|
||||||
|
<script src="~/AdminLTE-2.4.3/bower_components/fullcalendar/dist/fullcalendar.min.js"></script>
|
||||||
|
<script src="~/AdminLTE-2.4.3/bower_components/bootstrap-daterangepicker/daterangepicker.js"></script>
|
||||||
|
<script src="~/AdminLTE-2.4.3/bower_components/bootstrap-datepicker/dist/js/bootstrap-datepicker.min.js"></script>
|
||||||
|
<script src="~/AdminLTE-2.4.3/bower_components/fastclick/lib/fastclick.js"></script>
|
||||||
|
<script src="~/AdminLTE-2.4.3/bower_components/jquery-slimscroll/jquery.slimscroll.min.js"></script>
|
||||||
|
<script src="~/AdminLTE-2.4.3/plugins/timepicker/bootstrap-timepicker.min.js"></script>
|
||||||
|
<script src="~/AdminLTE-2.4.3/plugins/jQueryUI/jquery-ui.js"></script>
|
||||||
|
<script src="~/AdminLTE-2.4.3/plugins/jQueryUI/jquery-ui.min.js"></script>
|
||||||
|
<script src="~/AdminLTE-2.4.3/plugins/iCheck/icheck.min.js"></script>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="hold-transition @(theme.Skin.GetDescription()) @(!logged?theme.Layout.GetDescription():"")">
|
<body class="hold-transition @(theme.Skin.GetDescription()) @(!logged?theme.Layout.GetDescription():"")">
|
||||||
@@ -58,7 +80,9 @@ scratch. This page gets rid of all links and provides the needed markup only.
|
|||||||
<!-- mini logo for sidebar mini 50x50 pixels -->
|
<!-- mini logo for sidebar mini 50x50 pixels -->
|
||||||
<span class="logo-mini">@ViewBag.LogoMini</span>
|
<span class="logo-mini">@ViewBag.LogoMini</span>
|
||||||
<!-- logo for regular state and mobile devices -->
|
<!-- logo for regular state and mobile devices -->
|
||||||
<span class="logo-lg">@ViewBag.Logo</span>
|
<span class="logo-lg">
|
||||||
|
<img src="~/logo-lg.png" width="50" height="50" /> <b>S</b>enior<b>A</b>ssistant
|
||||||
|
</span>
|
||||||
</a>
|
</a>
|
||||||
<!-- Header Navbar -->
|
<!-- Header Navbar -->
|
||||||
<nav class="navbar navbar-static-top" role="navigation">
|
<nav class="navbar navbar-static-top" role="navigation">
|
||||||
@@ -66,9 +90,9 @@ scratch. This page gets rid of all links and provides the needed markup only.
|
|||||||
@if (logged)
|
@if (logged)
|
||||||
{
|
{
|
||||||
<text>
|
<text>
|
||||||
<a href="#" class="sidebar-toggle" data-toggle="push-menu" role="button">
|
<a href="#" class="sidebar-toggle" data-toggle="push-menu" role="button">
|
||||||
<span class="sr-only">Toggle navigation</span>
|
<span class="sr-only">Toggle navigation</span>
|
||||||
</a>
|
</a>
|
||||||
</text>
|
</text>
|
||||||
}
|
}
|
||||||
<!-- Navbar Right Menu -->
|
<!-- Navbar Right Menu -->
|
||||||
@@ -106,6 +130,7 @@ scratch. This page gets rid of all links and provides the needed markup only.
|
|||||||
<!-- REQUIRED JS SCRIPTS -->
|
<!-- REQUIRED JS SCRIPTS -->
|
||||||
<!-- jQuery 3 -->
|
<!-- jQuery 3 -->
|
||||||
@*<script src="~/AdminLTE-2.4.3/bower_components/jquery/dist/jquery.min.js"></script>*@
|
@*<script src="~/AdminLTE-2.4.3/bower_components/jquery/dist/jquery.min.js"></script>*@
|
||||||
|
|
||||||
<!-- Bootstrap 3.3.7 -->
|
<!-- Bootstrap 3.3.7 -->
|
||||||
<script src="~/AdminLTE-2.4.3/bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
|
<script src="~/AdminLTE-2.4.3/bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
|
||||||
<!-- AdminLTE App -->
|
<!-- AdminLTE App -->
|
||||||
@@ -114,4 +139,4 @@ scratch. This page gets rid of all links and provides the needed markup only.
|
|||||||
Both of these plugins are recommended to enhance the
|
Both of these plugins are recommended to enhance the
|
||||||
user experience. -->
|
user experience. -->
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Binary file not shown.
File diff suppressed because one or more lines are too long
39
SeniorAssistant/wwwroot/AdminLTE-2.4.3/plugins/business.css
Normal file
39
SeniorAssistant/wwwroot/AdminLTE-2.4.3/plugins/business.css
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
.business-hours {
|
||||||
|
padding: 40px 14px;
|
||||||
|
margin-top: -15px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.business-hours:before {
|
||||||
|
content: '';
|
||||||
|
width: 23px;
|
||||||
|
height: 23px;
|
||||||
|
background: #111;
|
||||||
|
position: absolute;
|
||||||
|
top: 5px;
|
||||||
|
left: -12px;
|
||||||
|
transform: rotate(-45deg);
|
||||||
|
z-index: -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.business-hours .title {
|
||||||
|
font-size: 20px;
|
||||||
|
color: #BBB;
|
||||||
|
text-transform: uppercase;
|
||||||
|
padding-left: 5px;
|
||||||
|
border-left: 4px solid #ffac0c;
|
||||||
|
}
|
||||||
|
|
||||||
|
.business-hours li {
|
||||||
|
color: #888;
|
||||||
|
line-height: 30px;
|
||||||
|
border-bottom: 1px solid #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.business-hours li:last-child {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.business-hours .opening-hours li.today {
|
||||||
|
color: #ffac0c;
|
||||||
|
}
|
||||||
BIN
SeniorAssistant/wwwroot/logo-lg.png
Normal file
BIN
SeniorAssistant/wwwroot/logo-lg.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 72 KiB |
BIN
SeniorAssistant/wwwroot/uploads/alfredigno.jpg
Normal file
BIN
SeniorAssistant/wwwroot/uploads/alfredigno.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 55 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 408 KiB After Width: | Height: | Size: 53 KiB |
Reference in New Issue
Block a user