private WebReportData GetBaseData(Building building) { WebReportData wrd = new WebReportData(); wrd.building = building.Name; wrd.picture = null; var logoData = new AstrodonClientPortal(SqlDataHandler.GetClientPortalConnectionString()).GetBuildingImage(building.ID); if (logoData != null) { using (var memLogo = new MemoryStream(logoData)) { Image img = Image.FromStream(memLogo); wrd.picture = img; } } //String status; //DataSet dsPic = mysql.GetData("SELECT image FROM tt_content WHERE pid = " + building.pid + " AND CType = 'image'", null, out status); //if (dsPic != null && dsPic.Tables.Count > 0 && dsPic.Tables[0].Rows.Count > 0) //{ // String picture = dsPic.Tables[0].Rows[0]["image"].ToString(); // Classes.Sftp sftpClient = new Classes.Sftp(String.Empty, true); // sftpClient.WorkingDirectory = "/srv/www/htdocs/uploads/pics"; // String thisDirectory = AppDomain.CurrentDomain.BaseDirectory; // String file1 = picture.Replace(Path.GetFileNameWithoutExtension(picture), Path.GetFileNameWithoutExtension(picture) + "_web1"); // String tempPath = Path.Combine(thisDirectory, file1); // bool success = sftpClient.Download(tempPath, picture, false, out status); // if (!success) // { // MessageBox.Show(status); // wrd.picture = null; // } // else // { // Image img = Image.FromFile(file1); // wrd.picture = img; // } //} //else //{ // wrd.picture = null; //} List <String> folders = LoadFolders(building.webFolder); List <String> rootFiles = ListFiles(building.webFolder, String.Empty); wrd.files.Add("Root", rootFiles); foreach (String folder in folders) { try { wrd.files.Add(folder, ListFiles(building.webFolder, folder)); } catch (Exception ex) { Controller.HandleError(ex); } } return(wrd); }
/* private void UploadToWeb(byte[] data, string filename,string description, List<EmailList> sendToList) * { * if (data != null) * { * var clientPortal = new AstrodonClientPortal(SqlDataHandler.GetClientPortalConnectionString()); * foreach (string customerAccount in sendToList.Select(a => a.AccNumber).Distinct()) * { * try * { * clientPortal.UploadUnitDocument(DocumentCategoryType.Letter,DateTime.Today * , building.ID, customerAccount, filename, description, data); * }catch(Exception ex) * { * Controller.HandleError(ex); * } * } * } * } */ private void SendMail(int msgID) { var clientPortal = new AstrodonClientPortal(SqlDataHandler.GetClientPortalConnectionString()); String mailQuery = "SELECT msg.id, msg.fromAddress, b.Code, b.DataPath, msg.incBCC, msg.bccAddy, msg.subject, msg.message, msg.billBuilding, msg.billAmount, msg.buildingID FROM tblMsg AS msg "; mailQuery += " INNER JOIN tblBuildings AS b ON msg.buildingID = b.id WHERE (msg.queue = 'False') AND msg.id = " + msgID.ToString(); SqlDataHandler dh = new SqlDataHandler(); String status = String.Empty; DataSet ds = dh.GetData(mailQuery, null, out status); if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) { foreach (DataRow dr in ds.Tables[0].Rows) { int buildingId = (int)dr["buildingID"]; String bCode = dr["Code"].ToString(); String dataPath = dr["DataPath"].ToString(); String fromAddress = dr["fromAddress"].ToString(); bool incBCC = bool.Parse(dr["incBCC"].ToString()); String bccAddy = dr["bccAddy"].ToString(); String subject = dr["subject"].ToString(); String message = dr["message"].ToString(); bool billBuilding = bool.Parse(dr["billBuilding"].ToString()); double billAmount = double.Parse(dr["billAmount"].ToString()); String attachmentQuery = "SELECT Name, Data FROM tblMsgData WHERE msgID = " + msgID.ToString(); DataSet dsAttachment = dh.GetData(attachmentQuery, null, out status); Dictionary <String, byte[]> attachments = new Dictionary <string, byte[]>(); if (dsAttachment != null && dsAttachment.Tables.Count > 0 && dsAttachment.Tables[0].Rows.Count > 0) { foreach (DataRow drA in dsAttachment.Tables[0].Rows) { if (!attachments.ContainsKey(drA["Name"].ToString())) { attachments.Add(drA["Name"].ToString(), (byte[])drA["Data"]); } } } String billableCustomersQuery = "SELECT distinct accNo FROM tblMsgRecipients WHERE billCustomer = 'True' and msgID = " + msgID.ToString(); DataSet billableCustomers = dh.GetData(billableCustomersQuery, null, out status); String allRecipientsQuery = "SELECT id, accNo, recipient FROM tblMsgRecipients WHERE msgID = " + msgID.ToString(); DataSet receivers = dh.GetData(allRecipientsQuery, null, out status); Dictionary <String, bool> emails = new Dictionary <string, bool>(); Dictionary <string, string> bulkMailAttachments = null; if (receivers != null && receivers.Tables.Count > 0 && receivers.Tables[0].Rows.Count > 0) { foreach (DataRow rrece in receivers.Tables[0].Rows) { bulkMailAttachments = new Dictionary <string, string>(); String[] emailAddys = rrece["recipient"].ToString().Split(new String[] { ";" }, StringSplitOptions.RemoveEmptyEntries); string accNumber = rrece["accNo"].ToString(); string emailAddress = string.Empty; if (emailAddys.Length > 0) { emailAddress = emailAddys[0]; } foreach (string file in attachments.Keys.ToList()) { var data = attachments[file]; if (data != null && data.Length > 0) { string url = clientPortal.UploadUnitDocument(DocumentCategoryType.Letter, DateTime.Today, buildingId, accNumber, file, "Correspondence", data, emailAddress); bulkMailAttachments.Add(file, url); } } bool success = Email.EmailProvider.SendBulkMail(fromAddress, emailAddys, subject, message, bulkMailAttachments); String updateQuery = "UPDATE tblMsgRecipients SET sentDate = getdate() WHERE id = " + rrece["id"].ToString(); dh.SetData(updateQuery, null, out status); if (!emails.ContainsKey(rrece["accNo"].ToString())) { emails.Add(rrece["accNo"].ToString(), success); } } } message += Environment.NewLine + Environment.NewLine; message += "Send status:" + Environment.NewLine + Environment.NewLine; var builder = new System.Text.StringBuilder(); builder.Append(message); foreach (KeyValuePair <String, bool> statuses in emails) { builder.Append(statuses.Key + " = " + statuses.Value.ToString() + Environment.NewLine); } message = builder.ToString(); if (incBCC) { String[] bccs = bccAddy.Split(new String[] { ";" }, StringSplitOptions.None); Email.EmailProvider.SendBulkMail(fromAddress, bccs, subject, message, bulkMailAttachments); } } } }
private void btnSendNow_Click(object sender, EventArgs e) { if (txtEmail.Text != "" && txtSubject.Text != "" && txtMessage.Text != "" && cmbCustomer.SelectedIndex >= 0 && cmbBuilding.SelectedIndex >= 0) { var customer = customers[cmbCustomer.SelectedIndex]; var building = buildings[cmbBuilding.SelectedIndex]; string trusteeEmails = ""; if (cbCCTrustees.Checked) { using (var ctx = SqlDataHandler.GetDataContext()) { var emls = ctx.CustomerSet.Where(a => a.BuildingId == building.ID && a.IsTrustee && a.EmailAddress1 != "").Select(a => a.EmailAddress1).ToList(); foreach (var s in emls) { if (!string.IsNullOrWhiteSpace(s)) { if (!string.IsNullOrWhiteSpace(trusteeEmails)) { trusteeEmails = trusteeEmails + ";" + s; } else { trusteeEmails = s; } } } } } String[] emails = txtEmail.Text.Split(new String[] { ";" }, StringSplitOptions.None); var clientPortal = new AstrodonClientPortal(SqlDataHandler.GetClientPortalConnectionString()); Dictionary <string, string> attachmentsData = new Dictionary <string, string>(); foreach (Object obj in lstAttachments.Items) { string fileName = obj.ToString(); if (File.Exists(fileName)) { attachmentsData.Add(Path.GetFileName(fileName), clientPortal.UploadUnitDocument(DocumentCategoryType.Letter, DateTime.Today, building.ID, customer.accNumber, txtSubject.Text, fileName, txtEmail.Text)); } } string cc = txtCC.Text; if (!string.IsNullOrWhiteSpace(cc) && !string.IsNullOrWhiteSpace(trusteeEmails)) { cc = ";" + trusteeEmails; } else { cc = trusteeEmails; } if (Email.EmailProvider.SendDirectMail(building.ID, customer.accNumber, emails, cc, txtBCC.Text, txtSubject.Text, txtMessage.Text, attachmentsData)) { MessageBox.Show("Message sent"); } else { MessageBox.Show("Message not sent"); } } else { if (txtEmail.Text == "") { MessageBox.Show("Please enter email address"); } else if (txtSubject.Text == "") { MessageBox.Show("Please enter subject"); } else if (txtMessage.Text == "") { MessageBox.Show("Please enter message"); } } }
private void SendCalenderInvite(CalendarPrintItem entry) { if (string.IsNullOrWhiteSpace(entry.PMEmail)) { Controller.HandleError("Email address not found for " + entry.PM); return; } var calendarInvite = CreateCalendarInvite(entry.BuildingName + " - " + entry.Event, "", entry.Venue, entry.EventDate, entry.EventToDate != null ? entry.EventToDate.Value : entry.EventDate.AddHours(2)); Dictionary <string, byte[]> attachments = new Dictionary <string, byte[]>(); attachments.Add("Appointment.ics", calendarInvite); string subject = entry.InviteSubject; if (String.IsNullOrWhiteSpace(subject)) { subject = entry.BuildingName + " - " + entry.Event; } string bodyContent = entry.InviteBody; if (String.IsNullOrWhiteSpace(bodyContent)) { bodyContent = ""; } string bccEmail = entry.BCCEmailAddress; if (bccEmail == string.Empty) { bccEmail = null; } //add aditional attachments using (var context = SqlDataHandler.GetDataContext()) { var attach = context.CalendarEntryAttachmentSet.Where(a => a.BuildingCalendarEntryId == entry.Id).ToList(); foreach (var a in attach) { attachments.Add(a.FileName, a.FileData); } List <string> toAddress = new List <string>(); toAddress.Add(entry.PMEmail); if (entry.EventyType == CalendarEntryType.Staff) { var qInvite = from i in context.CalendarUserInviteSet where i.CalendarEntryId == entry.Id select i.User.email; toAddress.AddRange(qInvite.ToList()); } if (!Email.EmailProvider.SendCalendarInvite(entry.PMEmail, toAddress.Distinct().ToArray(), subject, bodyContent, attachments, bccEmail)) { Controller.HandleError("Error seding email ", "Email error"); } if (entry.NotifyTrustees && entry.EventyType == CalendarEntryType.Financial) { var customers = Controller.pastel.AddCustomers(entry.BuildingAbreviation, entry.BuildingDataPath, true); var dbCustomers = context.CustomerSet.Where(a => a.BuildingId == entry.BuildingId && a.IsTrustee == true).ToList(); var clientPortal = new AstrodonClientPortal(SqlDataHandler.GetClientPortalConnectionString()); if (dbCustomers.Count() > 0 && Controller.AskQuestion("Are you sure you want to send the invite to " + dbCustomers.Count().ToString() + " trustees?")) { //upload building documents Dictionary <string, string> trusteeAttachmentLinks = new Dictionary <string, string>(); foreach (var fileName in attachments.Keys.ToList()) { if (fileName != "Appointment.ics") { var url = clientPortal.UploadBuildingDocument(DocumentCategoryType.PrivilegedCorrespondence, DateTime.Today, entry.BuildingId.Value, Path.GetFileNameWithoutExtension(fileName), fileName, attachments[fileName], "From Email"); trusteeAttachmentLinks.Add(fileName, url); } } foreach (var dbCustomer in dbCustomers) { var trustee = customers.Where(a => a.accNumber == dbCustomer.AccountNumber).FirstOrDefault(); if (trustee != null) { if (trustee.Email != null && trustee.Email.Length > 0) { if (!Email.EmailProvider.SendTrusteeCalendarInvite(entry.PMEmail, trustee.Email, subject, bodyContent, attachments, bccEmail, trusteeAttachmentLinks)) { Controller.HandleError("Error seding email", "Email error"); } } } } var itm = context.BuildingCalendarEntrySet.Single(a => a.id == entry.Id); itm.TrusteesNotified = true; entry.TrusteesNotified = true; context.SaveChanges(); BindDataGrid(); } } } }