private void WriteProgress(BackupResponse response) { var info = response.Current ?? response.History?.FirstOrDefault(); if (info == null) { Console.Write("\t\tBACKUP: {0}, bytes: ?/?, files: ?/?, ? \r", response.State); } else { Console.Write("\t\tBACKUP: {0}, bytes: {1}/{2}, files: {3}/{4}, {5} \r", response.State, info.CopiedBytes, info.TotalBytes, info.CopiedFiles, info.CountOfFiles, info.CurrentlyCopiedFile); } }
public static string BuildBackupResponseSubject(BackupRequest backupRequest, BackupResponse backupResponse) { string retValue = string.Empty; if (backupResponse.BackupResponseStatus == BackupResponseStatus.Accepted) { retValue = "Back-up Request (" + backupRequest.RequestNumber + ") statisfied"; } else if (backupResponse.BackupResponseStatus == BackupResponseStatus.Qualified) { retValue = "Back-up Request (" + backupRequest.RequestNumber + ") NOT statisfied"; } else if (backupResponse.BackupResponseStatus == BackupResponseStatus.Declined) { retValue = "Back-up Request (" + backupRequest.RequestNumber + ") declined"; } return(retValue); }
/// <summary> /// Handles a backup request /// </summary> internal async Task HandleBackupRequest( BackupParams backupParams, RequestContext <BackupResponse> requestContext) { try { BackupResponse response = new BackupResponse(); ConnectionInfo connInfo; bool supported = IsBackupRestoreOperationSupported(backupParams.OwnerUri, out connInfo); if (supported && connInfo != null) { DatabaseTaskHelper helper = AdminService.CreateDatabaseTaskHelper(connInfo, databaseExists: true); SqlConnection sqlConn = ConnectionService.OpenSqlConnection(connInfo, "Backup"); // Connection gets discounnected when backup is done BackupOperation backupOperation = CreateBackupOperation(helper.DataContainer, sqlConn, backupParams.BackupInfo); SqlTask sqlTask = null; // create task metadata TaskMetadata metadata = TaskMetadata.Create(backupParams, SR.BackupTaskName, backupOperation, ConnectionServiceInstance); sqlTask = SqlTaskManagerInstance.CreateAndRun <SqlTask>(metadata); sqlTask.StatusChanged += CloseConnection; } else { response.Result = false; } await requestContext.SendResult(response); } catch (Exception ex) { await requestContext.SendError(ex.ToString()); } }
public static string BuildBackupResponseEmail(BackupRequest backupRequest, BackupResponse backupResponse) { StringBuilder sb = new StringBuilder(); try { using (MTCDBEntities db = new MTCDBEntities()) { sb.Append(EmailBody(backupRequest)); sb.Append("<table>"); sb.Append("<tr>"); sb.Append("<td colspan='2'><br/></td>"); sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td>Responder's Comments:</td>"); sb.Append("<td>" + backupResponse.Comments + "</td>"); sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td colspan='2'><br/></td>"); sb.Append("</tr>"); using (MTCDbContext dc = new MTCDbContext()) { if (backupResponse.BackupResponseStatus == BackupResponseStatus.Accepted) { sb.Append("<tr>"); sb.Append("<td colspan='2'><h3>2. The Back-up Request will be satisfied by the following Back-up Contractors.</h3></td>"); sb.Append("</tr>"); var respondingContractor = GetContractorById(backupResponse.ContractorId); sb.Append("<tr>"); sb.Append("<td colspan='2'>" + respondingContractor.ContractCompanyName + "</td>"); sb.Append("</tr>"); } else if (backupResponse.BackupResponseStatus == BackupResponseStatus.Qualified) { sb.Append("<tr>"); sb.Append("<td colspan='2'><h3>2. The Back-up Request will be partially satisfied by the following Back-up Contractors.</h3></td>"); sb.Append("</tr>"); var respondingContractor = GetContractorById(backupResponse.ContractorId); sb.Append("<tr>"); sb.Append("<td colspan='2'>" + respondingContractor.ContractCompanyName + "</td>"); sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td colspan='2'><br/></td>"); sb.Append("</tr>"); sb.Append("<tr>"); sb.Append( "<td colspan='2'>Some or all of the Back-up Request has not been satisfied by any Back-up Contractor. The back-up Request has been referred to MTC for resolution.</td>"); sb.Append("</tr>"); } else if (backupResponse.BackupResponseStatus == BackupResponseStatus.Declined) { var declinationReason = dc.BackupDeclinationReasons.Find(backupResponse.BackupDeclinationReasonId); if (declinationReason != null) { sb.Append("<tr>"); sb.Append("<td>Declination Reason:</td>"); sb.Append("<td>" + declinationReason.ReasonCode + " - " + declinationReason.Reason + "</td>"); sb.Append("</tr>"); } } } sb.Append("<tr>"); sb.Append("<td><br/></td>"); sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td colspan='2'><h3>Please log on to the LATATrax to respond. <a href='" + GetWebUri() + "/BackupTrucks/ResponseBackup' target='_blank'>Back-up Response</a>.</h3></td>"); sb.Append("</tr>"); sb.Append("<tr>"); sb.Append("<td><br/></td>"); sb.Append("</tr>"); sb.Append("</table>"); sb.Append(EmailFooter()); } } catch { } return(sb.ToString()); }
public ActionResult RespondToBackupRequest(BackupResponse model, List <BackupRequestShiftAndDate> BackupDatesAndShifts) { var retvalue = true; using (var db = new MTCDbContext()) { model.CreatedOn = DateTime.Now; model.CreatedBy = HttpContext.User.Identity.Name; model.ModifiedOn = DateTime.Now; model.ModifiedBy = HttpContext.User.Identity.Name; db.BackupResponses.Add(model); if (model.BackupResponseStatus == BackupResponseStatus.Qualified) { if (BackupDatesAndShifts != null) { foreach (var item in BackupDatesAndShifts) { var baDs = db.BackupRequestShiftsAndDates.Find(item.Id); if (baDs == null) { continue; } if (item.AMRequested) { baDs.AMSatisfied = item.AMSatisfied; } if (item.MIDRequested) { baDs.MIDSatisfied = item.MIDSatisfied; } if (item.PMRequested) { baDs.PMSatisfied = item.PMSatisfied; } } } } db.SaveChanges(); var br = db.BackupRequests.Find(model.BackupRequestId); var backupProviders = db.BackupProviders.ToList(); var ba = db.BackupAssignments.FirstOrDefault(p => p.BeatId == br.BeatId); var toContractor = EmailManager.GetContractorById(br.ContractorId); var primaryContractorId = backupProviders.FirstOrDefault(c => c.BackupBeatId == ba.PrimaryBackupBeatId).ContractorId; var primaryContractor = EmailManager.GetContractorById(primaryContractorId); var secondaryContractorId = backupProviders.FirstOrDefault(c => c.BackupBeatId == ba.SecondaryBackupBeatId).ContractorId; var secondaryContractor = EmailManager.GetContractorById(secondaryContractorId); var tertiaryContractorId = backupProviders.FirstOrDefault(c => c.BackupBeatId == ba.TertiaryBackupBeatId).ContractorId; var tertiaryContractor = EmailManager.GetContractorById(tertiaryContractorId); var ccRecipients = new List <MTCEmailRecipient>(); var toRecipients = new List <MTCEmailRecipient>(); if (model.BackupResponseStatus == BackupResponseStatus.Declined || model.BackupResponseStatus == BackupResponseStatus.Qualified) { #region if (br.CurrentBackupContractorAssignmentLevel == BackupAssignmentLevel.Primary) { if (model.BackupResponseStatus == BackupResponseStatus.Declined) { br.PrimaryBackupResponseTimeExpiredOrDeclined = true; br.PrimaryBackupResponseTimeExpiredOrDeclinedOn = DateTime.Now; } br.CurrentBackupContractorId = secondaryContractorId; br.CurrentBackupContractorAssignmentLevel = BackupAssignmentLevel.Secondary; } else if (br.CurrentBackupContractorAssignmentLevel == BackupAssignmentLevel.Secondary) { if (model.BackupResponseStatus == BackupResponseStatus.Declined) { br.SecondaryBackupResponseTimeExpiredOrDeclined = true; br.SecondaryBackupResponseTimeExpiredOrDeclinedOn = DateTime.Now; } br.CurrentBackupContractorId = tertiaryContractorId; br.CurrentBackupContractorAssignmentLevel = BackupAssignmentLevel.Tertiary; } else if (br.CurrentBackupContractorAssignmentLevel == BackupAssignmentLevel.Tertiary) { if (model.BackupResponseStatus == BackupResponseStatus.Declined) { br.TertiaryBackupResponseTimeExpiredOrDeclined = true; br.TertiaryBackupResponseTimeExpiredOrDeclinedOn = DateTime.Now; } br.CurrentBackupContractorId = null; br.CurrentBackupContractorAssignmentLevel = BackupAssignmentLevel.AllBackupOperators; foreach (var backupProvider in backupProviders) { var backupProviderContractor = EmailManager.GetContractorById(backupProvider.ContractorId); ccRecipients.Add(new MTCEmailRecipient { Email = backupProviderContractor.Email, Name = backupProviderContractor.ContractCompanyName }); } } #endregion br.ModifiedBy = HttpContext.User.Identity.Name; br.ModifiedOn = DateTime.Now; if (model.BackupResponseStatus == BackupResponseStatus.Qualified) { //check if maybe now all shifts have been covered. then set status to accepted. var backupDatesAndShifts = db.BackupRequestShiftsAndDates.Where(p => p.BackupRequestId == br.Id).ToList(); var allShiftsSatisfied = true; foreach (var item in backupDatesAndShifts) { if (item.AMSatisfied == false || item.MIDSatisfied == false || item.PMSatisfied == false) { allShiftsSatisfied = false; } } if (allShiftsSatisfied) { model.BackupResponseStatus = BackupResponseStatus.Accepted; } } db.SaveChanges(); } toRecipients.Add(new MTCEmailRecipient { Email = toContractor.Email, Name = toContractor.ContractCompanyName }); ccRecipients.Add(new MTCEmailRecipient { Email = primaryContractor.Email, Name = primaryContractor.ContractCompanyName }); ccRecipients.Add(new MTCEmailRecipient { Email = secondaryContractor.Email, Name = secondaryContractor.ContractCompanyName }); ccRecipients.Add(new MTCEmailRecipient { Email = tertiaryContractor.Email, Name = tertiaryContractor.ContractCompanyName }); ccRecipients.Add(new MTCEmailRecipient { Email = Utilities.GetApplicationSettingValue("MTCContactEmail"), Name = Utilities.GetApplicationSettingValue("MTCContactName") }); EmailManager.SendEmail(toRecipients, EmailManager.BuildBackupResponseSubject(br, model), EmailManager.BuildBackupResponseEmail(br, model), ccRecipients); } return(Json(retvalue, JsonRequestBehavior.AllowGet)); }