Esempio n. 1
0
        protected void ArchivePartnerReportBtn_Click(object sender, EventArgs e)
        {
            //Submit the report and and go back to the reports list
            try
            {
                partner_reports report = db.partner_reports.SingleOrDefault(
                    data => data.partner_report_id == reportID);

                report.approved = false;
                report.archived = true;

                if (db.SaveChanges() > 0)
                {
                    db.SaveChanges();
                }

                //Redirect
                Response.Redirect("~/MRM/ApprovedPartnerReports.aspx", true);
            }
            catch (Exception ex)
            {
                //throw new Exception();
                AlertLabel.Text = ex.Message + " : " + ex.InnerException;

                ScriptManager.RegisterStartupScript(
                    Page,
                    Page.GetType(),
                    "alertModal", "$('#alertModal').modal('show');",
                    true);
            }
        }
Esempio n. 2
0
        protected void SubmitPartnerReportBtn_Click(object sender, EventArgs e)
        {
            if (int.Parse(NumberOfSectionsFilled.Value) == 7)
            {
                //Submit the report and and go back to the reports list
                try
                {
                    partner_reports report = db.partner_reports.SingleOrDefault(
                        data => data.partner_report_id == reportID);

                    report.saved     = false;
                    report.submitted = true;

                    //Send and Email here. Pick overall assessment and conclusion
                    //as email body.

                    /*
                     * 1. Check the user project
                     * 2. Check for the pillar for the project
                     * 3. Check all the users under that pillar
                     * 4. Create email body and content
                     * 5. Send report submission email to pillar users
                     */
                    var userIds = from data in db.AspNetUserClaims
                                  where data.ClaimValue == report.project.pillar_id.ToString() &&
                                  data.ClaimType == "Pillar"
                                  select data.UserId;

                    UserManager <IdentityUser> manager = new UserManager <IdentityUser>(
                        new UserStore <IdentityUser>());

                    foreach (var userId in userIds)
                    {
                        IdentityUser user = manager.FindById(userId);
                        if (user.Email != null || !(string.IsNullOrEmpty(user.Email)))
                        {
                            //===============================
                            //          send email          |
                            //===============================

                            //Create the mail message
                            MailMessage mail = new MailMessage();

                            //Add the Addresses
                            mail.To.Add(user.Email.Trim());

                            //Set the content
                            mail.Subject = "MRM: Quarterly Report Submitted";

                            System.Text.StringBuilder sBuilder = new System.Text.StringBuilder();
                            sBuilder.Append("Dear " + report.project.pillar.name + " Team,")
                            .AppendLine().AppendLine();
                            sBuilder.Append("Note that the ");
                            sBuilder.Append(report.project.implementing_partner.Trim() + " " +
                                            report.report_periods.period_name.Trim() + " " +
                                            report.year.year1.ToString());
                            sBuilder.Append(" quarterly report has been submitted to you for review and approval.")
                            .AppendLine().AppendLine();

                            var overallAss = (from data in db.project_overall_rating
                                              where data.partner_report_id == report.partner_report_id
                                              select new
                            {
                                data.project_rating.rating,
                                data.comment
                            }).SingleOrDefault();
                            if (overallAss != null)
                            {
                                sBuilder.Append("Project Rating : " + overallAss.rating).AppendLine();
                                sBuilder.Append("Commentary: " + overallAss.comment).AppendLine().AppendLine();
                            }
                            sBuilder.Append("You can access the report here: http://results.fsdafrica.org ").AppendLine().AppendLine();
                            sBuilder.Append("*This email is automatically generated - please do not reply").AppendLine();

                            mail.Body = sBuilder.ToString();

                            //Preparation to send the message
                            SmtpClient smtp = new SmtpClient();
                            /****SMTP Client should be defined in the Web.Config File****/

                            ServicePointManager.ServerCertificateValidationCallback = delegate(
                                object s, X509Certificate certificate, X509Chain chain,
                                SslPolicyErrors sslPolicyErrors)
                            { return(true); };  //Always Accept
                            try
                            {
                                //Send the message
                                smtp.Send(mail);
                            }
                            catch (Exception ex)
                            {
                                AlertLabel.Text = "Notification Mail not sent " + ex.Message;

                                ScriptManager.RegisterStartupScript(
                                    Page,
                                    Page.GetType(),
                                    "alertModal", "$('#alertModal').modal('show');",
                                    true);

                                return;
                            }
                        }
                    }

                    if (db.SaveChanges() > 0)
                    {
                        db.SaveChanges();
                    }

                    //Redirect
                    Response.Redirect("~/Partner/CreatedPartnerReports.aspx", true);
                }
                catch (Exception ex)
                {
                    //throw new Exception();
                    AlertLabel.Text = ex.Message + " : " + ex.InnerException;

                    ScriptManager.RegisterStartupScript(
                        Page,
                        Page.GetType(),
                        "alertModal", "$('#alertModal').modal('show');",
                        true);
                }
            }
            else
            {
                AlertLabel.Text = "You cannot Submit this report. It is incomplete";

                ScriptManager.RegisterStartupScript(
                    Page,
                    Page.GetType(),
                    "alertModal", "$('#alertModal').modal('show');",
                    true);

                return;
            }
        }
Esempio n. 3
0
        protected void CreateReportButton_Click(object sender, EventArgs e)
        {
            int partner      = int.Parse(Partner.SelectedValue);
            int reportPeriod = int.Parse(ReportPeriod.SelectedValue);
            int year         = int.Parse(Year.SelectedValue);

            var report = from data in db.partner_reports
                         where data.project_id == partner &&
                         data.report_period_id == reportPeriod &&
                         data.year_id == year
                         select data;

            if (report.Count() == 0)
            {
                //======Add the Narrative Part of the report to the Database======
                partner_reports myReport = new partner_reports();
                myReport.project_id       = partner;
                myReport.report_period_id = reportPeriod;
                myReport.year_id          = year;
                myReport.draft            = true;
                myReport.saved            = true;
                db.partner_reports.Add(myReport);

                //=======Add the Risks part of the Report to the database============
                var _theRisks = from data in db.project_risk
                                where (data.is_general_risk == true ||
                                       data.project_id == partner) &&
                                data.active == true
                                select data;
                foreach (var theRisk in _theRisks)
                {
                    project_risk_report risk = new project_risk_report();
                    risk.risk_id          = theRisk.risk_id;
                    risk.partner_reports  = myReport;
                    risk.project_id       = partner;
                    risk.report_period_id = reportPeriod;
                    risk.year_id          = year;
                    db.project_risk_report.Add(risk);
                }


                //=======Add the Indicator part of the report to the database======
                var reportIndicators = from data in db.partner_indicators
                                       where data.project_id == partner
                                       select data.partner_indicator_id;

                /* DataTable dt = new DataTable();
                 * dt.Columns.AddRange(
                 *   new DataColumn[3]
                 *   {
                 *       new DataColumn("partner_indicator_id"),
                 *       new DataColumn("report_period_id"),
                 *       new DataColumn("year_id")
                 *   });*/

                foreach (var _reportIndicators in reportIndicators)
                {
                    var filteredReportIndicators = from data in db.indicator_report_planner
                                                   where data.report_period_id == reportPeriod &&
                                                   data.year_id == year &&
                                                   data.partner_indicator_id == _reportIndicators
                                                   select data;

                    foreach (var _filteredReportIndicators in filteredReportIndicators)
                    {
                        /*//Populate a data table that can be queried for an empty indicator results set
                         * var row = dt.NewRow();
                         * row["partner_indicator_id"] = _filteredReportIndicators.partner_indicator_id;
                         * row["report_period_id"] = _filteredReportIndicators.report_period_id;
                         * row["year_id"] = _filteredReportIndicators.year_id;
                         * dt.Rows.Add(row);*/

                        partner_indicator_results myResults = new partner_indicator_results();
                        myResults.partner_indicator_id = _filteredReportIndicators.partner_indicator_id;
                        myResults.report_period_id     = _filteredReportIndicators.report_period_id;
                        myResults.year_id         = _filteredReportIndicators.year_id;
                        myResults.partner_reports = myReport;
                        db.partner_indicator_results.Add(myResults);


                        //================Added this peace of code to add disaggregated results=====================
                        var indDisaggregation = from data in db.project_indicator_disaggregation
                                                where data.project_indicator_id == _filteredReportIndicators.partner_indicator_id
                                                select data;
                        foreach (var _indDisaggregation in indDisaggregation)
                        {
                            project_indicator_disaggregation_result myDisaggregatedResults = new project_indicator_disaggregation_result();
                            myDisaggregatedResults.project_indicator_disaggregation_id = _indDisaggregation.id;
                            myDisaggregatedResults.partner_reports  = myReport;
                            myDisaggregatedResults.report_period_id = _filteredReportIndicators.report_period_id;
                            myDisaggregatedResults.year_id          = _filteredReportIndicators.year_id;
                            db.project_indicator_disaggregation_result.Add(myDisaggregatedResults);
                        }
                        //==================End added this peace of code=======================
                    }
                }

                /*if(dt.Rows.Count <= 0)
                 * {
                 *  AlertLabel.Text = "You cannot create that report, "+
                 *      "there are no indicators assigned to that reporting period."+
                 *      "Please contact the MRM Team";
                 *
                 *  ScriptManager.RegisterStartupScript(
                 *      Page,
                 *      Page.GetType(),
                 *      "alertModal", "$('#alertModal').modal('show');",
                 *      true);
                 *
                 *  //End page execution
                 *  //Response.End();//ends execution like below
                 *  return;
                 * }
                 * else if(dt.Rows.Count > 0)
                 * {
                 *  foreach (DataRow row in dt.Rows)
                 *  {
                 *      partner_indicator_results myResults = new partner_indicator_results();
                 *      myResults.partner_indicator_id = int.Parse(row["partner_indicator_id"].ToString());
                 *      myResults.report_period_id = int.Parse(row["report_period_id"].ToString());
                 *      myResults.year_id = int.Parse(row["year_id"].ToString());
                 *      myResults.partner_reports = myReport;
                 *      db.partner_indicator_results.Add(myResults);
                 *  }
                 * }*/
                //==================================================================

                try
                {
                    if (db.SaveChanges() > 0)
                    {
                        db.SaveChanges();

                        alertDiv.Visible = true;
                    }
                }
                catch (Exception ex)
                {
                    AlertLabel.Text = "You cannot create that report, please check again" + ex.InnerException;

                    ScriptManager.RegisterStartupScript(
                        Page,
                        Page.GetType(),
                        "alertModal", "$('#alertModal').modal('show');",
                        true);

                    return;
                }
            }
            else
            {
                AlertLabel.Text = "That Report has Already Been Created";

                ScriptManager.RegisterStartupScript(
                    Page,
                    Page.GetType(),
                    "alertModal", "$('#alertModal').modal('show');",
                    true);

                return;
            }
        }