2016-07-21 4 views
1

これは短期間です。 私のシステムには、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"); 
     } 

:私はそれを望んでいたよう

enter image description here

エントリが追加されます。isSignedがfalseで、学生の署名

この

はsubmitボタンのための方法であり、日付はまだ記入されていません。 記入されると、会社の署名日、姓、姓が偽の別のエントリがデータベースに作成されます。

この原因は何ですか?私はdb.Contracs.Add(契約)をコメントアウトしました.AppIdによって必要とされた契約は、それが一意の識別子になるのでわかります。私は間違って何をしていますか?生徒のサインを日付に追加し、IsSigned boolをtrueに変更したいと考えています。 注意が学生のCPRがデータベースに格納されていないことを、「20」は、アプリケーションのID

答えて

0

ですだから私は解決策を見つけた:

私は今、代わりに私が持っていたすべてのもののパラメータとしてのContractIDを渡します

public ActionResult SendMailAsAStudent(int contractId, string studentCPR) 

ように、私はちょうど契約を取得::前

Contract contract = db.Contracts.Find(contractId); 

は、パラメータのすべての検索処理を変更:

ReportParameter cvrParameter = new ReportParameter("cvrParameter", contract.CVR); 
      ReportParameter companyNameParameter = new ReportParameter("companyNameParameter", contract.Company.CompanyName); 
      ReportParameter companyAddressParameter = new ReportParameter("companyAddressParameter", contract.Company.Address); 
      ReportParameter companyCityParameter = new ReportParameter("companyCityParameter", contract.Company.City); 
      ReportParameter studentCityParameter = new ReportParameter("studentCityParameter", contract.Student.City); 
      ReportParameter studentNameParameter = new ReportParameter("studentNameParameter", contract.Student.FirstName+" "+ contract.Student.LastName); 
      ReportParameter studentAddressParameter = new ReportParameter("studentAddressParameter", contract.Student.Address); 
      ReportParameter studentZipCodeParameter = new ReportParameter("studentZipCodeParameter", contract.Student.ZipCode); 
      ReportParameter jobStartDateParameter = new ReportParameter("jobStartDateParameter", contract.Application.Project.StartDate); 
      ReportParameter jobEndDateParameter = new ReportParameter("jobEndDateParameter", contract.Application.Project.EndDate); 
      ReportParameter jobDescriptionParameter = new ReportParameter("jobDescriptionParameter", contract.Application.Project.Description); 
      ReportParameter jobHoursPerWeekParameter = new ReportParameter("jobHoursPerWeekParameter", contract.Application.Project.HoursPerWeek.ToString()); 
      ReportParameter jobHourlyRateParameter = new ReportParameter("jobHourlyRateParameter", contract.Application.Project.HourlyRate.ToString()); 
      ReportParameter cprParameter = new ReportParameter("cprParameter", studentCPR); 
      ReportParameter studentSignDateParameter = new ReportParameter("studentSignDateParameter", DateTime.Today.ToString("dd/MM/yyyy")); 
      ReportParameter companySignDateParameter = new ReportParameter("companySignDateParameter", contract.CompanySigningDate); 
      ReportParameter companyRepNameParameter = new ReportParameter("companyRepNameParameter", contract.RepFirstName +" "+contract.RepLastName); 
      ReportParameter projectWorkFromParameter = new ReportParameter("projectWorkFromParameter", contract.Application.Project.WorkFrom); 

これは、私の他の投稿のパラメータの他の問題を修正しました。 An attempt was made to set a report parameter 'studentSignDateParameter' that is not defined in this report

関連する問題