Итак, для справки, я хочу отправить одно и то же электронное письмо всем больницам, заказы которых связаны с доставкой. Поэтому после редактирования доставки (например, для изменения статуса) электронное письмо должно быть отправлено во ВСЕ больницы, у которых есть заказы в этой доставке.
Проблема в том, что доставка может иметь много заказов, а не обязательно только один, и поэтому я не уверен, как настроить таргетинг на все адреса электронной почты всех больниц, у которых есть заказы в этой конкретной доставке.
Кроме того, больница связана только с заказом, а заказ связан с доставкой - и единственный способ получить доступ к электронной почте больницы - из больницы стол. Это означает, что мне нужно пройти через таблицу «Заказ», а затем перейти к таблице «Больница».
Как мне это сделать? Я все еще новичок в MVC, поэтому буду признателен за любую помощь, которую смогу получить.
Я делаю это в POST моего Метода редактирования в Контроллере доставки, потому что я хочу отправить электронное письмо оттуда только после внесения изменения. Вот почему я вызываю его после savechanges().
Эти строки
Код: Выделить всё
Order order = db.Orders.Where(o => o.OrderID == order.DeliveryID).FirstOrDefault();Если требуется дополнительный код, сообщите мне, и я добавлю его в вопрос!
Модели
Доставка
Код: Выделить всё
public class Delivery
{
public int DeliveryID { get; set; }
public int DriverID { get; set; }
public virtual Driver Driver { get; set; }
public virtual ICollection Orders { get; set; }
}
Код: Выделить всё
public class Hospital
{
public int HospitalID { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public virtual ICollection Orders { get; set; }
}
Код: Выделить всё
public class Order
{
public int OrderID { get; set; }
public int HospitalID { get; set; }
public int? DeliveryID { get; set; }}
public virtual Hospital Hospital { get; set; }
public virtual Delivery Delivery { get; set; }
}
Код: Выделить всё
public class DeliveryVM
{
public int? ID { get; set; }
public int DriverID { get; set; }
public SelectList DriverList { get; set; }
public List Orders { get; set; }
}
Код: Выделить всё
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(DeliveryVM model)
{
// Get the data model based on the ID of the view model
Delivery delivery = db.Deliverys.Find(model.ID);
// Map the view model properties to the data model
delivery.DriverID = model.DriverID;
....
db.SaveChanges();
//Email
Order order = db.Orders.Where(o => o.OrderID == order.DeliveryID).FirstOrDefault(); // I tried this but it didn't work. It was just an attempt
Hospital hospital = db.Hospitals.(h => h.HospitalID == order.HospitalID); // I was going to use this to retrieve the hospitalIDs linked to the Order? Don't know if thats correct
dynamic email = new Email("Example");
email.ID = delivery.DeliveryID;
email.To = hospital.Email; // this is where you set the email you are sending to.
email.Send();
//End
return RedirectToAction("Index");
}
- Я удалил много кода из метода редактирования доставки для удобства чтения, поэтому при необходимости я также могу добавить его к вопросу.
Подробнее здесь: https://stackoverflow.com/questions/329 ... -postal-in
Мобильная версия