Ejemplo n.º 1
0
        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);
                }
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 5
0
        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();
                }
            }
        }
Ejemplo n.º 6
0
 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);
            }
        }
Ejemplo n.º 9
0
        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);
        }