public ActionResult RequestQuotation(int enquiry_id, int group_id, string subject, string message_body)
        {
            Enquiry enquiry = db.Enquiries.Find(enquiry_id);

            var serviceProviders = db.ServiceProviders.Where(x => x.ServiceProviderGroupID == group_id);

            List <string> sendTo = new List <string>();

            foreach (ServiceProvider serviceProvider in serviceProviders)
            {
                sendTo.Add(serviceProvider.EmailAddress);
            }

            if (sendTo.Count > 0)
            {
                try
                {
                    EmailTemplate.Send(sendTo, "*****@*****.**", subject, EmailTemplate.FinalizeHtmlEmail(message_body), true);
                    enquiry.QuotationRequested = true;
                }
                catch
                {
                    return(RedirectToAction("Error"));
                }

                db.SaveChanges();
            }

            ViewBag.group_id = new SelectList(db.ServiceProviderGroups, "ID", "Name");

            return(RedirectToAction("Index"));
        }
        public ActionResult SendTransportOrder(Enquiry enquiry, int service_provider_id, string subject, string message_body)
        {
            ServiceProvider serviceProvider = db.ServiceProviders.Find(service_provider_id);

            try
            {
                EmailTemplate.Send(serviceProvider.EmailAddress, "*****@*****.**", subject, EmailTemplate.FinalizeHtmlEmail(message_body), true);
                using (TranyrLogisticsDb context = new TranyrLogisticsDb())
                {
                    Enquiry currentEnquiry = context.Enquiries.Find(enquiry.ID);
                    currentEnquiry.PreferedServiceProviderID = service_provider_id;
                    currentEnquiry.TransportOrderSent        = true;
                    db.Entry(currentEnquiry).State           = EntityState.Modified;
                    db.SaveChanges();
                }
            }
            catch { }

            return(RedirectToAction("CustomerConfirmation", new { id = enquiry.ID }));
        }
        public ActionResult SendCustomerConfirmation(CustomerConfirmation customerConfirmation, string subject, string message_body)
        {
            Enquiry enquiry = db.Enquiries.Find(customerConfirmation.EnquiryID);

            if (enquiry is ExistingCustomerEnquiry)
            {
                ((ExistingCustomerEnquiry)enquiry).Customer = db.Customers.Where(x => x.CustomerNumber == ((ExistingCustomerEnquiry)enquiry).CustomerNumber).FirstOrDefault();
            }
            else
            {
                return(RedirectToAction("Error"));
            }

            List <string> attachTransportOrder = null;

            if (Request.Files.Count > 0)
            {
                var file     = Request.Files["FilePath"];
                var fileName = Path.GetFileName(file.FileName);
                if (fileName != string.Empty)
                {
                    string uploadDirectoryPath = Path.Combine(
                        AppDomain.CurrentDomain.BaseDirectory +
                        @"Uploads\EnquiryDocs\" + enquiry.ID + @"\"
                        );
                    string savedFileName = Path.Combine(
                        uploadDirectoryPath,
                        DateTime.Now.Ticks + Path.GetExtension(fileName)
                        );
                    if (!Directory.Exists(uploadDirectoryPath))
                    {
                        Directory.CreateDirectory(uploadDirectoryPath);
                    }
                    file.SaveAs(savedFileName);
                    customerConfirmation.ActualFileName = fileName;
                    customerConfirmation.FilePathOnDisc = savedFileName;

                    customerConfirmation.CreateDate = DateTime.Now;
                    db.CustomerConfirmations.Add(customerConfirmation);

                    attachTransportOrder = new List <string>();
                    attachTransportOrder.Add(customerConfirmation.FilePathOnDisc);
                }
            }

            if (ModelState.IsValid)
            {
                try
                {
                    if (enquiry is PotentialCustomerEnquiry)
                    {
                        EmailTemplate.Send(((PotentialCustomerEnquiry)enquiry).EmailAddress, "*****@*****.**", subject, EmailTemplate.FinalizeHtmlEmail(message_body), true, attachTransportOrder);
                    }
                    else if (enquiry is ExistingCustomerEnquiry)
                    {
                        EmailTemplate.Send(((ExistingCustomerEnquiry)enquiry).Customer.EmailAddress, "*****@*****.**", subject, EmailTemplate.FinalizeHtmlEmail(message_body), true, attachTransportOrder);
                    }

                    enquiry.CustomerConfirmationSent = true;

                    EmailTemplate.Send(
                        "*****@*****.**",
                        "*****@*****.**",
                        "Customer Shipment Confirmation Sent",
                        EmailTemplate.PrepareInternalCustomerConfirmationEmail(enquiry, @"~\views\EmailTemplate\InternalCustomerConfirmationEmail.html.cshtml"),
                        true
                        );
                }
                catch { }

                db.Entry(enquiry).State = EntityState.Modified;
                db.SaveChanges();

                return(RedirectToAction("CustomerConfirmation", new { id = enquiry.ID }));
            }

            return(View(customerConfirmation));
        }
        public ActionResult SendQuotation(Quotation quotation, string subject, string message_body)
        {
            Enquiry enquiry = db.Enquiries.Find(quotation.EnquiryID);

            if (enquiry is ExistingCustomerEnquiry)
            {
                ((ExistingCustomerEnquiry)enquiry).Customer = db.Customers.Where(x => x.CustomerNumber == ((ExistingCustomerEnquiry)enquiry).CustomerNumber).FirstOrDefault();
            }

            if (Request.Files.Count > 0)
            {
                var    file                = Request.Files["FilePath"];
                var    fileName            = Path.GetFileName(file.FileName);
                string uploadDirectoryPath = Path.Combine(
                    AppDomain.CurrentDomain.BaseDirectory +
                    @"Uploads\EnquiryDocs\" + enquiry.ID + @"\"
                    );
                string savedFileName = Path.Combine(
                    uploadDirectoryPath,
                    DateTime.Now.Ticks + Path.GetExtension(fileName)
                    );
                if (!Directory.Exists(uploadDirectoryPath))
                {
                    Directory.CreateDirectory(uploadDirectoryPath);
                }
                file.SaveAs(savedFileName);
                quotation.ActualFileName = fileName;
                quotation.FilePathOnDisc = savedFileName;
            }

            quotation.CreateDate = DateTime.Now;
            if (ModelState.IsValid)
            {
                db.Quotations.Add(quotation);
                db.SaveChanges();

                try
                {
                    List <string> attachQuote = new List <string>();
                    attachQuote.Add(quotation.FilePathOnDisc);

                    if (enquiry is PotentialCustomerEnquiry)
                    {
                        EmailTemplate.Send(((PotentialCustomerEnquiry)enquiry).EmailAddress, "*****@*****.**", subject, EmailTemplate.FinalizeHtmlEmail(message_body), true, attachQuote);
                    }
                    else if (enquiry is ExistingCustomerEnquiry)
                    {
                        EmailTemplate.Send(((ExistingCustomerEnquiry)enquiry).Customer.EmailAddress, "*****@*****.**", subject, EmailTemplate.FinalizeHtmlEmail(message_body), true, attachQuote);
                    }

                    enquiry.QuotationSent = true;
                }
                catch
                {
                    return(RedirectToAction("Error"));
                }

                db.SaveChanges();

                return(RedirectToAction("GenerateQuotation", new { id = enquiry.ID }));
            }

            return(View(quotation));
        }