using System; using System.Collections.Generic; using System.Data; using System.Data.Entity; using System.IO; using System.Linq; using System.Net; using System.Web; using System.Web.Mvc; using CRM.Models; using PagedList; using System.ComponentModel; using System.ComponentModel.DataAnnotations; namespace CRM.Controllers { public class MeetingsController : Controller { private CRMEntities db = new CRMEntities(); // GET: Meetings/Create public ActionResult Create(int customerId) { var snapshots = db.Accounts.Where(x => x.Customer == customerId) .Select(x => new SnapshotModel { AccountNumber = x.AccountNumber, System = x.System, Category = x.Category, Balance = x.Balance, }).ToList(); var model = new MeetingModel { Customer = customerId, Snapshots = snapshots, }; if (model.ConfidenceRating==null) { model.ConfidenceRating = new SelectList(new List<SelectListItem>(){ new SelectListItem(){Text="Undefined", Value="0"}, new SelectListItem(){Text="Very Stable", Value="1"}, new SelectListItem(){Text="Stable", Value="2"}, new SelectListItem(){Text="At Risk", Value="3"}, }, "Value", "Text"); } //Add upload capability to Create Meeting view foreach (string upload in Request.Files) { if (Request.Files[upload].FileName != "") { string path = AppDomain.CurrentDomain.BaseDirectory + "~/uploads/"; string filename = Path.GetFileName(Request.Files[upload].FileName); Request.Files[upload].SaveAs(Path.Combine(path, filename)); } } ViewBag.Customer = new SelectList(db.Meetings, "Id", "Customer1.Name"); ViewBag.Employee = new SelectList(db.Employees.OrderBy(e => e.FullName), "FullName", "FullName"); return View(model); } // POST: Meetings/Create [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create([Bind(Include = "Id,InteractionDate,Notes,approval_status_id,CustomerCallDecisionedBy,CustomerCallDecisionDate,BankOfficer,TrustOfficer,Customer,Employee,IsDeleted,/*ConfidenceRating,*/IsReview,Purpose,FollowUpItems")] Meeting meeting, HttpPostedFileBase upload) { if (ModelState.IsValid) //Add upload capability to the create meeting view { List<Attachment> attachments = new List<Attachment>(); for (int i = 0; i <Request.Files.Count; i++) { var file = Request.Files[i]; if(file != null && file.ContentLength > 0) { var fileName = Path.GetFileName(file.FileName); var id = Guid.NewGuid().ToString(); Attachment attachment = new Attachment() { Name = fileName, Path = id + Path.GetExtension(upload.FileName), }; attachments.Add(attachment); var path = Path.Combine(Server.MapPath("~/uploads"), attachment.Path); file.SaveAs(path); } } //Add Account List to create view foreach (var account in db.Accounts.Where(x => x.Customer == meeting.Customer)) { var snapshot = new Snapshot { AccountNumber = account.AccountNumber, System = account.System, Category = account.Category, Balance = account.Balance, }; meeting.Snapshots.Add(snapshot); } meeting.Attachments = attachments; db.Meetings.Add(meeting); db.SaveChanges(); return RedirectToAction("Details", new { Id = meeting.Id }); } return View(meeting); }Create view:
@model CRM.Models.MeetingModel @{ ViewBag.Title = "Create Meeting"; } <h2>Create Meeting</h2> @using (Html.BeginForm("Create", "Meetings", null, FormMethod.Post, new { enctype = "multipart/form-data" })) { @Html.AntiForgeryToken() @Html.HiddenFor(x => x.Customer) <div class="form-horizontal"> @Html.ValidationSummary(true, "", new { @class = "text-danger" }) <div class="form-group"> @Html.LabelFor(model => model.InteractionDate, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-6"> @Html.EditorFor(model => model.InteractionDate, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.InteractionDate, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Purpose, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.TextAreaFor(model => model.Purpose, 5, 145, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Purpose, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Notes, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.TextAreaFor(model => model.Notes, 5, 145, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Notes, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.FollowUpItems, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.TextAreaFor(model => model.FollowUpItems, 5, 145, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.FollowUpItems, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Customer1.BankOfficer, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-6"> @Html.EditorFor(model => model.Customer1.BankOfficer, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Customer1.BankOfficer, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.TrustOfficer, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-6"> @Html.EditorFor(model => model.TrustOfficer, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.TrustOfficer, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Employee, "Employee", htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-6"> @Html.DropDownList("Employee", null, htmlAttributes: new { @class = "form-control" }) @Html.ValidationMessageFor(model => model.Employee, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.ConfidenceRating, "Confidence Rating", htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.DropDownListFor(c => c.ConfidenceRating, Model.ConfidenceRating, "Please Select Confidence Rating") @Html.ValidationMessage("Confidence Rating is required.") </div> </div> <div class="form-group"> @Html.LabelFor(model => model.IsReview, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> <div class="checkbox"> @Html.EditorFor(model => model.IsReview) @Html.ValidationMessageFor(model => model.IsReview, "", new { @class = "text-danger" }) </div> </div> </div> <div class="form-group"> @Html.Label("Attachment", new { @class = "control-label col-md-2" }) <div class="col-md-10"> <input type="file" multiple="multiple" id="Attachment" name="upload"> </div> </div> <div class="form-group"> <div class="col-md-offset-2 col-md-10"> <input type="submit" value="Create" class="btn btn-default" /> </div> </div> </div> } @section Scripts { @Scripts.Render("~/bundles/jqueryval") }
Experts Exchange always has the answer, or at the least points me in the correct direction! It is like having another employee that is extremely experienced.
When asked, what has been your best career decision?
Deciding to stick with EE.
Being involved with EE helped me to grow personally and professionally.
Connect with Certified Experts to gain insight and support on specific technology challenges including:
We've partnered with two important charities to provide clean water and computer science education to those who need it most. READ MORE