これは短期間です。 私のシステムには、companyとstudentの2種類のユーザがあります。 会社が求人を投稿し、学生が応募し(新しい応募がアプリケーションデータベーステーブルに追加されます)、会社が応募書類を選択して学生に提供し、サイトで契約者のページに移動し、どのように契約がどのように見えるのか、学生のCPR(SSN)はどこに行くのでしょうか。彼または彼女は会社のCVR(会社SSN)を記入し、名字とクリックを提出します。これにより、契約データベーステーブルに新しいエントリが作成されます。ここまでは順調ですね。データベースエントリを更新しようとしていますが、新しいエントリを追加しようとしています
namespace Leepio.Models
{
public class Contract {
public int ContractId { get; set; }
public string StudentId { get; set; }
public string CompanyId { get; set; }
public string CVR { get; set; }
public int ApplicationId { get; set; }
public bool IsSigned { get; set; }
public string StudentSigningDate { get; set; }
public string CompanySigningDate { get; set; }
public string RepFirstName { get; set; }
public string RepLastName { get; set; }
public virtual ApplicationUser Student { get; set; }
public virtual ApplicationUser Company { get; set; }
public virtual Application Application { get; set; }
}
すべては二つのフィールドを除いて、この時点で満たされている:IsSignedフィールド(学生は受け入れて送信するときにtrueに変わります)とStudentSigningDate、である。ここ
はContract.csモデルクラスです受講者が受け入れる日の文字列の日付)。 生徒はメールを受け取り、リンク先に行くと、契約のプレビューとCPRが入力されたテキストボックスと送信ボタンが表示されます。ここで問題が始まるところです。そして、これが起こる
public ActionResult SendMailAsAStudent(string studentId, string companyId, int applicationId, string companyCVR, string studentCPR)
{
var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
var student = manager.FindById(studentId);
var company = manager.FindById(companyId);
var application = db.Applications.Find(applicationId);
var contractobj = db.Contracts.Find(applicationId);
Project projectobj = db.Projects.Find(application.ProjectId);
var myMessage = new SendGridMessage();
myMessage.From = new MailAddress("[email protected]");
myMessage.AddTo(student.Email);
myMessage.AddTo(company.Email);
myMessage.Subject ="The contract for " + projectobj.Title + " is signed!";
myMessage.Html = "Here is the final contract";
LocalReport localReport = new LocalReport();
localReport.ReportPath = Server.MapPath("~/Contracts/Contract.rdlc");
ReportParameter cvrParameter = new ReportParameter("cvrParameter", companyCVR);
ReportParameter companyNameParameter = new ReportParameter("companyNameParameter", company.CompanyName);
ReportParameter companyAddressParameter = new ReportParameter("companyAddressParameter", company.Address);
ReportParameter companyCityParameter = new ReportParameter("companyCityParameter", company.City);
ReportParameter studentCityParameter = new ReportParameter("studentCityParameter", student.City);
ReportParameter studentNameParameter = new ReportParameter("studentNameParameter", student.FirstName+" "+student.LastName);
ReportParameter studentAddressParameter = new ReportParameter("studentAddressParameter", student.Address);
ReportParameter studentZipCodeParameter = new ReportParameter("studentZipCodeParameter", student.ZipCode);
ReportParameter jobStartDateParameter = new ReportParameter("jobStartDateParameter", projectobj.StartDate);
ReportParameter jobEndDateParameter = new ReportParameter("jobEndDateParameter", projectobj.EndDate);
ReportParameter jobDescriptionParameter = new ReportParameter("jobDescriptionParameter", projectobj.Description);
ReportParameter jobHoursPerWeekParameter = new ReportParameter("jobHoursPerWeekParameter", projectobj.HoursPerWeek.ToString());
ReportParameter jobHourlyRateParameter = new ReportParameter("jobHourlyRateParameter", projectobj.HourlyRate.ToString());
ReportParameter cprParameter = new ReportParameter("cprParameter", studentCPR);
ReportParameter studentSignDateParameter = new ReportParameter("studentSignDateParameter", DateTime.Today.ToString("dd/MM/yyyy"));
ReportParameter companySignDateParameter = new ReportParameter("companySignDateParameter", contractobj.CompanySigningDate);
ReportParameter companyRepNameParameter = new ReportParameter("companyRepNameParameter", contractobj.RepFirstName +" "+contractobj.RepLastName);
ReportParameter projectWorkFromParameter = new ReportParameter("projectWorkFromParameter", projectobj.WorkFrom);
localReport.SetParameters(new ReportParameter[] { cprParameter });
localReport.SetParameters(new ReportParameter[] { cvrParameter });
localReport.SetParameters(new ReportParameter[] { companyNameParameter });
localReport.SetParameters(new ReportParameter[] { companyAddressParameter });
localReport.SetParameters(new ReportParameter[] { studentNameParameter });
localReport.SetParameters(new ReportParameter[] { studentAddressParameter });
localReport.SetParameters(new ReportParameter[] { studentZipCodeParameter });
localReport.SetParameters(new ReportParameter[] { jobStartDateParameter });
localReport.SetParameters(new ReportParameter[] { jobEndDateParameter });
localReport.SetParameters(new ReportParameter[] { jobDescriptionParameter });
localReport.SetParameters(new ReportParameter[] { jobHoursPerWeekParameter });
localReport.SetParameters(new ReportParameter[] { jobHourlyRateParameter });
localReport.SetParameters(new ReportParameter[] { studentSignDateParameter });
localReport.SetParameters(new ReportParameter[] { companySignDateParameter });
localReport.SetParameters(new ReportParameter[] { companyRepNameParameter });
localReport.SetParameters(new ReportParameter[] { projectWorkFromParameter });
localReport.SetParameters(new ReportParameter[] { companyCityParameter });
localReport.SetParameters(new ReportParameter[] { studentCityParameter });
string reportType = "PDF";
string mimeType;
string encoding;
string fileNameExtension = "pdf";
Warning[] warnings;
string[] streams;
var renderedBytes = localReport.Render(reportType, "", out mimeType, out encoding, out fileNameExtension, out streams, out warnings);
Response.AddHeader("content-disposition", "attatchment; filename=Contract." + fileNameExtension);
MemoryStream stream = new MemoryStream(renderedBytes);
myMessage.AddAttachment(stream, "Contract.pdf");
var apiKey = "removed for this post";
var transportWeb = new Web(apiKey);
transportWeb.DeliverAsync(myMessage);
Contract contract = db.Contracts.Find(contractobj.ContractId);
contract.IsSigned = true;
contract.StudentSigningDate = DateTime.Today.ToString("dd/MM/yyyy");
//db.Contracts.Add(contract);
db.SaveChanges();
return RedirectToAction("Index", "Projects");
}
:私はそれを望んでいたよう
エントリが追加されます。isSignedがfalseで、学生の署名
この
はsubmitボタンのための方法であり、日付はまだ記入されていません。 記入されると、会社の署名日、姓、姓が偽の別のエントリがデータベースに作成されます。この原因は何ですか?私はdb.Contracs.Add(契約)をコメントアウトしました.AppIdによって必要とされた契約は、それが一意の識別子になるのでわかります。私は間違って何をしていますか?生徒のサインを日付に追加し、IsSigned boolをtrueに変更したいと考えています。 注意が学生のCPRがデータベースに格納されていないことを、「20」は、アプリケーションのID