public void Approve([FromBody] Models.Presentation.ReportSignatureModel signatureInfo) { string userName = System.Web.HttpContext.Current.User.Identity.Name.Substring(5).ToLower(); if (userName.ToLower() != signatureInfo.userName.ToLower()) { throw new Exception("Current user information is not synchronized. Cannot approve report."); } SessionController session = new SessionController(); bool userVerified = session.VerifyPassword(userName, signatureInfo.signature); session.Dispose(); if (userVerified) { Models.Medical medicalAssessment = this._db.Medicals.Where(m => m.incidentMedicalId == signatureInfo.incidentMedicalId).SingleOrDefault(); if (medicalAssessment != null) { // SET STATUS OF ASSESSMENT TO CLOSED medicalAssessment.statusId = 6; this._db.Medicals.Attach(medicalAssessment); this._db.Entry(medicalAssessment).State = System.Data.Entity.EntityState.Modified; // CREATE SIGNATURE RECORD Models.ReportSign medicalSignature = new Models.ReportSign(); medicalSignature.incidentId = signatureInfo.incidentId; medicalSignature.incidentMedicalId = signatureInfo.incidentMedicalId; medicalSignature.reportSigType = "M"; medicalSignature.reportSigUserId = signatureInfo.currentUser; medicalSignature.staffName = signatureInfo.staffName; medicalSignature.staffTitle = signatureInfo.staffTitle; medicalSignature.approvalStatusId = 3; medicalSignature.reportSigStamp = DateTime.Now; medicalSignature.reportSigStation = signatureInfo.stationName; this._db.ReportSigns.Add(medicalSignature); this._db.SaveChanges(); } else { throw new Exception("Medical Assessment could not be found."); } // if (medicalAssessment != null) } else { throw new Exception("Unable to validate signature. Please use your current CFS account password to sign."); } // if (userVerified) }
public void AdminFinalApprove([FromBody] Models.Presentation.ReportSignatureModel signatureInfo) { Models.IncidentReport report = this._db.IncidentReports.Where(r => r.incidentId == signatureInfo.incidentId).SingleOrDefault(); if (report != null) { string userName = System.Web.HttpContext.Current.User.Identity.Name.Substring(5).ToLower(); if (userName.ToLower() != signatureInfo.userName.ToLower()) { throw new Exception("Current user information is not synchronized. Cannot approve report."); } SessionController session = new SessionController(); bool userVerified = session.VerifyPassword(userName, signatureInfo.signature); session.Dispose(); if (userVerified) { report.statusId = signatureInfo.statusId; report.lastModified = DateTime.Now; report.lastModifiedBy = signatureInfo.currentUser; this._db.SaveChanges(); PrintController printer = new PrintController(); printer.SaveToEbook(report, signatureInfo.ebookFolder); printer.Dispose(); } else { throw new Exception("Unable to validate signature. Please use your current CFS account password to sign."); } } }
public void SupervisorFinalApprove([FromBody] Models.Presentation.ReportSignatureModel signatureInfo) { Models.IncidentReport report = this._db.IncidentReports.Where(r => r.incidentId == signatureInfo.incidentId).SingleOrDefault(); string logDetails = string.Empty; if (report != null) { string userName = System.Web.HttpContext.Current.User.Identity.Name.Substring(5).ToLower(); if (userName.ToLower() != signatureInfo.userName.ToLower()) { throw new Exception("Current user information is not synchronized. Cannot approve report."); } SessionController session = new SessionController(); bool userVerified = session.VerifyPassword(userName, signatureInfo.signature); session.Dispose(); if (userVerified) { // GET SUPERVISOR SIGNATURE RECORD Models.ReportSign supervisorSignature = this._db.ReportSigns.Where( s => s.incidentId == signatureInfo.incidentId && s.reportSigType == "S" && s.reportSigUserId == signatureInfo.currentUser).SingleOrDefault(); if (supervisorSignature == null) { throw new Exception("Could not find signature record. Cannot approve report."); } else { supervisorSignature.approvalStatusId = signatureInfo.approvalStatusId; supervisorSignature.reportSigStamp = DateTime.Now; supervisorSignature.reportSigStation = signatureInfo.stationName; supervisorSignature.approvalComments = signatureInfo.approvalComments; this._db.ReportSigns.Attach(supervisorSignature); this._db.Entry(supervisorSignature).State = System.Data.Entity.EntityState.Modified; if (signatureInfo.approvalStatusId == 3) // SUPERVISOR APPROVED { // SUPERVISOR APPROVES, REPORT SENT TO ADMINS FOR REVIEW Models.ReportSign adminSignature = new Models.ReportSign(); adminSignature.incidentId = signatureInfo.incidentId; adminSignature.incidentMedicalId = 0; adminSignature.reportSigType = "A"; adminSignature.reportSigUserId = 0; adminSignature.staffName = "Administrator"; adminSignature.staffTitle = "Administrator"; adminSignature.approvalStatusId = 1; this._db.ReportSigns.Add(adminSignature); // EMAIL ADMINS!!!! (INCLUDE ADMINS?) logDetails = "Supervisor approved report."; } else { // NOTIFY EMPLOYEE REPORT REJECTED logDetails = "Supervisor rejected report. Comments: " + signatureInfo.approvalComments; } // if (signatureInfo.approvalStatusId == 3) // UPDATE REPORT STATUS report.statusId = signatureInfo.statusId; report.currentUser = signatureInfo.currentUser; report.lastModified = DateTime.Now; report.lastModifiedBy = signatureInfo.currentUser; this._db.IncidentReports.Attach(report); this._db.Entry(report).State = System.Data.Entity.EntityState.Modified; // WRITE CHANGES TO LOG Models.ReportLog log = new Models.ReportLog(); log.incidentId = signatureInfo.incidentId; log.userId = signatureInfo.currentUser; log.userStation = signatureInfo.stationName; log.logDateTime = DateTime.Now; log.logDetails = logDetails; this._db.ReportLogs.Add(log); // IF JUSTICE CENTER CALLED, NOTIFY CORPORATE COMPLIANCE // notifyPartyId = 8 (Justice Center) bool jcCalled = this._db.Notifications.Where(n => n.incidentId == signatureInfo.incidentId && n.notifyPartyId == 8).Any(); if (jcCalled) { Models.Notification ccNotification = new Models.Notification(); ccNotification.incidentId = signatureInfo.incidentId; ccNotification.notifyPartyId = 37; // Corporate Compliance ccNotification.notifyDateTime = DateTime.Now; ccNotification.notifyContact = "CFS Corporate Compliance"; ccNotification.notifyMethod = "E-Mail"; ccNotification.notifyStaffId = 0; ccNotification.isAcknowledged = 1; ccNotification.acknowledgeUserId = 0; this._db.Notifications.Add(ccNotification); MailController mailer = new MailController(); List <string> sendTos = new List <string>(); sendTos.Add("*****@*****.**"); StringBuilder msg = new StringBuilder(); msg.Append("<h1>Incident Report Notification</h1>"); msg.Append("<p>An incident report has been created for client " + report.clientName + " by " + report.staffName); msg.Append(", and the Justice Center was called.</p>"); mailer.SendMail(sendTos, "*****@*****.**", "Incident Reports: Justice Center Called", System.Net.Mail.MailPriority.Normal, msg); } this._db.SaveChanges(); } // if (supervisorSignature == null) } else { throw new Exception("Unable to validate signature. Please use your current CFS account password to sign."); } // if (userVerified) } }
public void FinalApprove([FromBody] Models.Presentation.ReportSignatureModel signatureInfo) { Models.IncidentReport report = this._db.IncidentReports.Where(r => r.incidentId == signatureInfo.incidentId).SingleOrDefault(); if (report != null) { string userName = System.Web.HttpContext.Current.User.Identity.Name.Substring(5).ToLower(); if (userName.ToLower() != signatureInfo.userName.ToLower()) { throw new Exception("Current user information is not synchronized. Cannot approve report."); } SessionController session = new SessionController(); bool userVerified = session.VerifyPassword(userName, signatureInfo.signature); session.Dispose(); if (userVerified) { Models.ReportSign staffSignature = new Models.ReportSign(); staffSignature.incidentId = signatureInfo.incidentId; staffSignature.incidentMedicalId = 0; staffSignature.reportSigType = "E"; staffSignature.reportSigUserId = signatureInfo.currentUser; staffSignature.staffName = signatureInfo.staffName; staffSignature.staffTitle = signatureInfo.staffTitle; staffSignature.approvalStatusId = 3; staffSignature.reportSigStamp = DateTime.Now; staffSignature.reportSigStation = signatureInfo.stationName; this._db.ReportSigns.Add(staffSignature); StaffController staffs = new StaffController(); Models.User supervisor = staffs.GetStaffSupervisor(signatureInfo.currentUser); staffs.Dispose(); Models.ReportSign supervisorSignature = new Models.ReportSign(); supervisorSignature.incidentId = signatureInfo.incidentId; supervisorSignature.incidentMedicalId = 0; supervisorSignature.reportSigType = "S"; supervisorSignature.reportSigUserId = supervisor.userId; supervisorSignature.staffName = supervisor.firstName + " " + supervisor.lastName; supervisorSignature.staffTitle = supervisor.jobTitle; supervisorSignature.approvalStatusId = 1; this._db.ReportSigns.Add(supervisorSignature); // WRITE CHANGES TO LOG Models.ReportLog log = new Models.ReportLog(); log.incidentId = signatureInfo.incidentId; log.userId = signatureInfo.currentUser; log.userStation = signatureInfo.stationName; log.logDateTime = DateTime.Now; log.logDetails = "Report signed by staff."; this._db.ReportLogs.Add(log); // EMAIL SUPERVISOR!!!! (INCLUDE ADMINS?) MailController mailer = new MailController(); StringBuilder messageBody = new StringBuilder(); messageBody.Append("<p>A new incident report for <b>" + report.clientName + "</b> has been posted by " + report.staffName + ".</p>"); messageBody.Append("<p><a href=\"http://cfs-incidents/report/residential/" + report.incidentId.ToString() + "\">Click here to view the report.</a></p>"); mailer.SendMail( new List <string>() { supervisor.eMail, "*****@*****.**" }, "*****@*****.**", "Incident Report Posted", System.Net.Mail.MailPriority.High, messageBody ); mailer.Dispose(); report.statusId = signatureInfo.statusId; report.currentUser = signatureInfo.currentUser; report.lastModified = DateTime.Now; report.lastModifiedBy = signatureInfo.currentUser; this._db.IncidentReports.Attach(report); this._db.Entry(report).State = System.Data.Entity.EntityState.Modified; this._db.SaveChanges(); } else { throw new Exception("Unable to validate signature. Please use your current CFS account password to sign."); } } }