private void button1_Click(object sender, EventArgs e) { if (Controller.UserIsSheldon() && Controller.AskQuestion("Are you sure you want to overwrite ALL building fees?")) { using (var ctx = SqlDataHandler.GetDataContext()) { var s = ctx.tblSettings.First(); var buildings = ctx.tblBuildingSettings.ToList(); foreach (var b in buildings) { b.reminderFee = s.reminder_fee.Value; b.finalFee = s.final_fee.Value; b.disconnectionFee = s.discon_notice_fee.Value; b.summonsFee = s.summons_fee.Value; b.disconnectionNoticefee = s.discon_notice_fee.Value; b.handoverFee = s.handover_fee.Value; b.SMSFee = s.DefaultSMSFee; } ctx.SaveChanges(); Controller.ShowMessage("Updated all buildings with: " + Environment.NewLine + "Reminder Fee: " + s.reminder_fee.Value.ToString() + Environment.NewLine + "Final Fee: " + s.final_fee.Value.ToString() + Environment.NewLine + "Disconnection fee: " + s.discon_notice_fee.Value.ToString() + Environment.NewLine + "Disconnection notice fee: " + s.discon_notice_fee.Value.ToString() + Environment.NewLine + "Summons fee: " + s.summons_fee.Value.ToString() + Environment.NewLine + "Handover fee: " + s.handover_fee.Value.ToString() + Environment.NewLine + "SMS Fee: " + s.DefaultSMSFee.ToString() + Environment.NewLine); } } }
public static bool VerifyBuildingDetailsEntered(int buildingId) { if (buildingId > 0) { using (var ctx = SqlDataHandler.GetDataContext()) { var bld = ctx.tblBuildings.Single(a => a.id == buildingId); if (bld.IsRentalBuilding) { return(true); } /* * Insurance details * Insurance broker * Building Reg number * CSOS reg number */ string errorMessage = string.Empty; if (!bld.DisableCSOSCheck) { if (string.IsNullOrWhiteSpace(bld.CSOSRegistrationNumber)) { errorMessage += "CSOS Registration Number is empty." + Environment.NewLine; } } if (!bld.DisableInsuranceCheck) { if (string.IsNullOrWhiteSpace(bld.BuildingRegistrationNumber)) { errorMessage += "Building Registration Number is empty." + Environment.NewLine; } if (bld.InsuranceBrokerId == null) { errorMessage += "Insurance Broker not configured." + Environment.NewLine; } if (string.IsNullOrWhiteSpace(bld.PolicyNumber)) { errorMessage += "Insurance Details not configured." + Environment.NewLine; } } if (!string.IsNullOrWhiteSpace(errorMessage)) { Controller.HandleError("Building information not completed." + Environment.NewLine + errorMessage + Environment.NewLine + "Please enter this information now."); return(false); } } } return(true); }
private void LoadSMSTemplates() { using (var context = SqlDataHandler.GetDataContext()) { var templates = context.NotificationTemplateSet.OrderBy(a => a.TemplateName) .Where(a => a.TemplateType == Data.NotificationTemplateData.NotificationTemplateType.General).ToList(); templates.Insert(0, new Data.NotificationTemplateData.NotificationTemplate() { TemplateName = "None", MessageText = "" }); cbSMSTemplate.DataSource = templates; cbSMSTemplate.DisplayMember = "TemplateName"; cbSMSTemplate.ValueMember = "MessageText"; cbSMSTemplate.SelectedIndex = 0; } }
private void LoadCustomers(String category) { customers = Controller.pastel.AddCustomers(building.Abbr, building.DataPath, true); emailList = new List <EmailList>(); using (var context = SqlDataHandler.GetDataContext()) { var trustees = context.CustomerSet.Where(a => a.BuildingId == building.ID && a.IsTrustee == true).ToList(); foreach (Customer c in customers) { c.IsTrustee = trustees.Where(a => a.AccountNumber == c.accNumber).FirstOrDefault() != null; if (c.statPrintorEmail != 4 && (c.category == category || String.IsNullOrEmpty(category))) { EmailList el = new EmailList { AccNumber = c.accNumber, Name = c.description, EmailAddress = String.Empty }; var builder = new System.Text.StringBuilder(); builder.Append(el.EmailAddress); foreach (String email in c.Email) { if (!email.Contains("imp.ad-one")) { builder.Append(email.Replace("\"", "").Replace("\'", "").Replace(";", "").Replace(",", "") + ";"); } } el.EmailAddress = builder.ToString(); el.Include = false; if (!emailList.Contains(el)) { emailList.Add(el); } } } } dgCustomers.DataSource = null; dgCustomers.DataSource = emailList; lstAttachments.Items.Clear(); }
public static void SetPAAvailable() { if (Controller.user.usertype == 4) { using (var ctx = SqlDataHandler.GetDataContext()) { var myUser = ctx.tblPAStatus.SingleOrDefault(a => a.paID == Controller.user.id); if (myUser == null) { myUser = new Data.tblPAStatu() { paID = Controller.user.id }; ctx.tblPAStatus.Add(myUser); } myUser.paStatus = true; myUser.availableSince = DateTime.Now; ctx.SaveChanges(); } } }
public frmMain() { InitializeComponent(); upgradeDatabaseToolStripMenuItem.Visible = false; _DataContext = SqlDataHandler.GetDataContext(); }
private void SetupEmail(Statement stmt, string fileName, String url) { String emailAddy = ""; var builder = new System.Text.StringBuilder(); builder.Append(emailAddy); if (stmt != null && stmt.email1 != null && stmt.email1.Length > 0) { foreach (String addy in stmt.email1) { if (!string.IsNullOrWhiteSpace(addy) && addy.Contains("@")) { builder.Append(addy + ";"); } } emailAddy = builder.ToString(); } else { AddProgressString("No email address available for " + stmt.accName); return; } if (string.IsNullOrWhiteSpace(emailAddy)) { AddProgressString("No email address available for " + stmt.accName); return; } using (var context = SqlDataHandler.GetDataContext()) { var statementItem = new tblStatementRun() { email1 = emailAddy, queueDate = DateTime.Now, fileName = Path.GetFileName(fileName), debtorEmail = stmt.DebtorEmail, unit = stmt.AccNo + (stmt.BuildingName == "ASTRODON RENTALS" ? "R" : ""), attachment = string.Empty, subject = Path.GetFileNameWithoutExtension(fileName) + " " + DateTime.Now.ToString(), URL = url, sentDate1 = DateTime.Now }; bool isRental = statementItem.fileName.ToUpper().EndsWith("_R.PDF"); string[] toMail = statementItem.email1.Split(";".ToCharArray()); try { if (Email.EmailProvider.SendStatement(statementItem.debtorEmail, toMail, stmt.AccNo, fileName, stmt.StmtDate, url, isRental)) { statementItem.errorMessage = "Processed & Sent"; } else { statementItem.errorMessage = "Error"; } } catch (Exception exp) { statementItem.errorMessage = "Exception:" + exp.Message; } context.tblStatementRuns.Add(statementItem); context.SaveChanges(); } }
public List <Statement> SetBuildings(int buildingId, String buildingName, String buildingPath, int buildingPeriod, bool isHOA) { if (_BuildingList == null) { _BuildingList = new Buildings(false, false).buildings; } Building build = _BuildingList.Where(a => a.ID == buildingId).FirstOrDefault(); if (build == null) { build = new Building(); } build.Name = buildingName; build.DataPath = buildingPath; build.Period = buildingPeriod; build.ID = buildingId; User portfolioManager = null; using (var ctx = SqlDataHandler.GetDataContext()) { var pmUser = ctx.tblUsers.Where(a => a.email == build.PM && a.Active).FirstOrDefault(); if (pmUser != null) { portfolioManager = new Users().GetUser(pmUser.id); } List <Customer> customers = Controller.pastel.AddCustomers(buildingName, buildingPath, true); List <Statement> myStatements = new List <Statement>(); lblCCount.Text = build.Name + " 0/" + customers.Count.ToString(); lblCCount.Refresh(); int ccount = 0; foreach (Customer customer in customers) { if (buildingName.Trim().ToUpper() != _AstradonRentalsBuilding.ToUpper() && ( customer.IntCategory == 10 || //Units Disconnected customer.IntCategory == 11 //Units Disconnected )) { string reason = "Customer Account skipped: " + customer.accNumber + " category: " + customer.category; if (customer.IntCategory == 10) { reason = "Customer Account is in Unallocated Deposits category and will be skipped: " + customer.accNumber; } else if (customer.IntCategory == 11) { reason = "Customer Account is in Transferred Units/PMA category and will be skipped: " + customer.accNumber; } AddProgressString(reason); ctx.WriteStatementRunLog(customer.accNumber, Controller.user.name, reason); } else if (buildingName.Trim().ToUpper() == _AstradonRentalsBuilding.ToUpper() && (customer.IntCategory == 113 || customer.IntCategory == 116 || customer.IntCategory == 117 || customer.IntCategory == 118)) { AddProgressString("Astrodon Rentals category skipped : " + customer.accNumber + " " + customer.category); ctx.WriteStatementRunLog(customer.accNumber, Controller.user.name, "Astrodon Rentals category skipped : " + customer.accNumber + " " + customer.category); } else { try { AddProgressString("Loading Statement " + customer.accNumber); var canemail = customer.Email.Count(d => !String.IsNullOrEmpty(d)) > 0; Statement myStatement = new Statement { AccNo = customer.accNumber, BuildingId = buildingId }; List <String> address = new List <string>(); address.Add(customer.description); foreach (String addyLine in customer.address) { if (!String.IsNullOrEmpty(addyLine)) { address.Add(addyLine); } } myStatement.Address = address.ToArray(); myStatement.BankDetails = (!String.IsNullOrEmpty(Controller.pastel.GetBankDetails(buildingPath)) ? Controller.pastel.GetBankDetails(buildingPath) : ""); myStatement.BuildingName = buildingName; myStatement.LevyMessage1 = (isHOA ? HOAMessage1 : BCMessage1); myStatement.LevyMessage2 = (!String.IsNullOrEmpty(Message2) ? Message2 : ""); myStatement.Message = (!String.IsNullOrEmpty(txtMessage.Text) ? txtMessage.Text : ""); myStatement.StmtDate = stmtDatePicker.Value; double totalDue = 0; String trnMsg; myStatement.DebtorEmail = build.Debtor; if (String.IsNullOrWhiteSpace(myStatement.DebtorEmail)) { Controller.HandleError("Debtor not configured on this building. Please check building configuration."); } myStatement.PrintMe = (customer.statPrintorEmail == 2 || customer.statPrintorEmail == 4 || !canemail ? false : true); myStatement.EmailMe = (customer.statPrintorEmail == 4 && canemail ? false : true); if (customer.Email != null && customer.Email.Length > 0) { List <String> newEmails = new List <string>(); foreach (String emailAddress in customer.Email) { newEmails.Add(emailAddress); } myStatement.email1 = newEmails.ToArray(); } else { myStatement.PrintMe = true; } if (myStatement.PrintMe) { AddProgressString(customer.accNumber + " Print : " + customer.statPrintorEmail.ToString() + " = " + myStatement.PrintMe.ToString()); } //check for in transfer and create a transfer letter instead of a statement. if (myStatement.IsRental == false) { myStatement.IsInTransfer = customer.IntCategory == 2; } if (myStatement.IsInTransfer) { if (portfolioManager != null) { var fileData = GenerateCustomerTransferLetter(build, customer, portfolioManager); myStatement.InTransferLetter = fileData; myStatement.Transactions = new List <Transaction>(); myStatement.totalDue = 0; myStatements.Add(myStatement); } else { ctx.WriteStatementRunLog("ALL", Controller.user.name, "Building PM not found for: " + buildingName); AddProgressString("Building PM not found for: " + buildingName); } } else { List <Transaction> transactions = (new Classes.LoadTrans()).LoadTransactions(build, customer, stmtDatePicker.Value, out totalDue, out trnMsg); if (!string.IsNullOrWhiteSpace(trnMsg)) { AddProgressString("Statement for " + customer.accNumber + " has messages " + trnMsg); } if (transactions != null && transactions.Where(a => a.IsOpeningBalance == false).Count() > 0) { myStatement.Transactions = transactions; myStatement.totalDue = totalDue; myStatements.Add(myStatement); } else { ctx.WriteStatementRunLog(customer.accNumber, Controller.user.name, "zero transactions - statement skipped"); AddProgressString("Statement for " + customer.accNumber + " has zero transactions - statement skipped"); } } } catch (Exception ex) { AddProgressString("Error processing " + customer.accNumber + " " + ex.Message); ctx.WriteStatementRunLog(customer.accNumber, Controller.user.name, "Error processing "); ctx.WriteStatementRunLog(customer.accNumber, Controller.user.name, ex.Message + " stack" + ex.StackTrace); Controller.HandleError("Error processing " + customer.accNumber + " " + ex.Message); } ccount++; lblCCount.Text = build.Name + " " + ccount.ToString() + "/" + customers.Count.ToString(); lblCCount.Refresh(); Application.DoEvents(); } } return(myStatements); } }
private static String generatHTMLEmail(String requestString, String emailString, string fromEmail) { string html = ResourceManager.EmailLayout(requestString); html = html.Replace("{{SenderEmail}}", fromEmail); html = html.Replace("{{CONTENT-GOES-HERE}}", emailString); //paragraph spacing html = html.Replace("<p>", "<p style=\"padding: 5px 5px 5px 5px; margin: 2px 2px 2px 2px\">"); if (_LastUserSent == null || _LastUserSent.email != fromEmail) { using (var context = SqlDataHandler.GetDataContext()) { var sender = context.tblUsers.Where(a => a.email == fromEmail && a.Active == true).FirstOrDefault(); if (sender == null) { _LastUserSent = new Data.tblUser() { email = fromEmail, name = "Astrodon", phone = "011 867 3183", fax = "011 867 3163" }; } else { _LastUserSent = sender; if (string.IsNullOrWhiteSpace(_LastUserSent.phone)) { _LastUserSent.phone = "011 867 3183"; } if (string.IsNullOrWhiteSpace(_LastUserSent.fax)) { _LastUserSent.fax = "011 867 3163"; } } } } html = html.Replace("{{SENDER_TEL_NUMBER}}", _LastUserSent.phone); html = html.Replace("{{SENDER_FAX_NUMBER}}", _LastUserSent.fax); html = html.Replace("{{SENDER_NAME}}", _LastUserSent.name); /* * * String html = ""; * html += "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>"; * html += "<html xmlns='http://www.w3.org/1999/xhtml'>"; * html += "<head>"; * html += "<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' />"; * html += "<title>" + requestString + "</title>"; * html += "</head>"; * html += "<body>"; * * html += emailString; * * html += "</body>"; * html += "</html>";*/ return(html); }