Example #1
0
        public object Post([FromBody] ProjectOrganismModel newProjectOrganism)
        {
            var organism       = (Organism)HttpContext.Current.Items["organism"];
            var project        = (Project)HttpContext.Current.Items["project"];
            var groups         = (List <Group>)HttpContext.Current.Items["groups"];
            var user           = (User)HttpContext.Current.Items["user"];
            var actionProposed = (ActionProposed)HttpContext.Current.Items["actionProposed"];
            var condition      = (Condition)HttpContext.Current.Items["condition"];
            var daps           = (int[])HttpContext.Current.Items["daps"];

            if (string.IsNullOrEmpty(newProjectOrganism.Commentary))
            {
                newProjectOrganism.Commentary = "";
            }

            TreeDetail treeDetail = new TreeDetailBLL().CreateProject_Organism(
                newProjectOrganism.Varas,
                newProjectOrganism.Height,
                newProjectOrganism.Lat,
                newProjectOrganism.Lon,
                daps, // newProjectOrganism.Daps.Select(instance => instance.DapValue).ToArray(),
                actionProposed,
                condition,
                newProjectOrganism.Commentary,
                organism,
                project,
                user);

            return(ProjectOrganismModel.GetProjectOrganismObject(treeDetail));
        }
Example #2
0
    protected void Page_Load(object sender, EventArgs e)
    {
        string projectID = (Page.RouteData.Values["project_id"] as string);

        List <string> repsIdsToCreate = (Page.RouteData.Values["reports"] as string).Split(',').ToList();

        List <Rep> repsToCreate = new List <Rep>();

        foreach (string repID in repsIdsToCreate)
        {
            repsToCreate.Add(new RepBLL().GetRepByRepID(Convert.ToInt32(repID)));
        }

        bool isFullHeader = Convert.ToBoolean(Page.RouteData.Values["headeroneachreport"] as string);// cbHeaderOnEachReport.Checked;

        Eisk.BusinessEntities.Project  project  = new ProjectBLL().GetProjectByProjectID(Convert.ToInt32(projectID));
        Eisk.BusinessEntities.User     user     = new UserBLL().GetUserByUserName((HttpContext.Current.User.Identity).Name);
        Eisk.BusinessEntities.UserInfo userInfo = user.UserInfoes.First(instance => instance.UserID == user.UserID);

        DateTime time = DateTime.Now;

        string name = Reports.Translate(project.ProjectInfoes.First().ProjectName);

        string path = System.Web.HttpContext.Current.Server.MapPath(@System.Configuration.ConfigurationManager.AppSettings["ProjectsRoot"]) + projectID.ToString();

        // check folder exists
        if (!Directory.Exists(path))
        {
            Directory.CreateDirectory(path);
            System.IO.File.WriteAllText(path + "/" + name + ".xlsx", "");
        }

        FileInfo newFile = new FileInfo(path + @"\" + name + ".xlsx");

        File.Delete(path + @"\" + name + ".xlsx");
        using (ExcelPackage pck = new ExcelPackage(newFile))
        {
            ProjectInfo projectInfo = new ProjectInfoBLL().GetProjectInfoesByProjectID(Convert.ToInt32(projectID)).First();
            List <Project_Organisms> project_Organisms = new Project_OrganismsBLL().GetProject_OrganismsByProjectID(Convert.ToInt32(projectID));

            int totalPages        = 0;
            int currentPageNumber = 0;
            int maxLines          = Convert.ToInt32(@System.Configuration.ConfigurationManager.AppSettings["reportsMaxLines"]);

            List <TreeDetail>   treeDetails            = new List <TreeDetail>();
            List <TreeDetail>   treeComentaries        = new List <TreeDetail>();
            List <TreesSummary> actionProposedID0Items = new List <TreesSummary>();
            List <TreesSummary> actionProposedID1Items = new List <TreesSummary>();
            List <TreesSummary> actionProposedID2Items = new List <TreesSummary>();
            List <TreesSummary> actionProposedID3Items = new List <TreesSummary>();
            List <TreesSummary> actionProposedID4Items = new List <TreesSummary>();

            int treeDetailsCount            = 0;
            int actionProposedID0ItemsCount = 0;
            int actionProposedID1ItemsCount = 0;
            int actionProposedID2ItemsCount = 0;
            int actionProposedID3ItemsCount = 0;
            int actionProposedID4ItemsCount = 0;

            List <Index> idexes = new List <Index>();

            if (repsToCreate.Select(instance => instance.RepID).Contains(1))
            {
                idexes.Add(
                    new Index(
                        repsToCreate.Where(instance => instance.RepID == 1).Select(instance => instance.RepName).First(),
                        1,
                        totalPages + 1,
                        totalPages + 1
                        ));
                totalPages += 1;
            }
            if (repsToCreate.Select(instance => instance.RepID).Contains(2))
            {
                treeDetails       = new TreeDetailBLL().GetTreeDetailsByProjectID(Convert.ToInt32(projectID));
                treeDetailsCount += Reports.GetPageCountOrDefault(maxLines, treeDetails.Count);
                idexes.Add(
                    new Index(
                        repsToCreate.Where(instance => instance.RepID == 2).Select(instance => instance.RepName).First(),
                        2,
                        totalPages + 1,
                        totalPages + treeDetailsCount
                        ));
                totalPages += treeDetailsCount;
            }
            if (repsToCreate.Select(instance => instance.RepID).Contains(3))
            {
                actionProposedID0Items      = new TreesSummaryBLL().GetItems(project_Organisms, 0, true);
                actionProposedID0ItemsCount = Reports.GetPageCountOrDefault(maxLines, actionProposedID0Items.Count);
                ;
                idexes.Add(
                    new Index(
                        repsToCreate.Where(instance => instance.RepID == 3).Select(instance => instance.RepName).First(),
                        3,
                        totalPages + 1,
                        totalPages + actionProposedID0ItemsCount
                        ));
                totalPages += actionProposedID0ItemsCount;
            }
            if (repsToCreate.Select(instance => instance.RepID).Contains(4))
            {
                actionProposedID1Items       = new TreesSummaryBLL().GetItems(project_Organisms, 1, true);
                actionProposedID1ItemsCount += Reports.GetPageCountOrDefault(maxLines, actionProposedID1Items.Count);
                idexes.Add(
                    new Index(
                        repsToCreate.Where(instance => instance.RepID == 4).Select(instance => instance.RepName).First(),
                        4,
                        totalPages + 1,
                        totalPages + actionProposedID1ItemsCount
                        ));
                totalPages += actionProposedID1ItemsCount;
            }
            if (repsToCreate.Select(instance => instance.RepID).Contains(5))
            {
                actionProposedID2Items       = new TreesSummaryBLL().GetItems(project_Organisms, 2, true);
                actionProposedID2ItemsCount += Reports.GetPageCountOrDefault(maxLines, actionProposedID2Items.Count);
                idexes.Add(
                    new Index(
                        repsToCreate.Where(instance => instance.RepID == 5).Select(instance => instance.RepName).First(),
                        5,
                        totalPages + 1,
                        totalPages + actionProposedID2ItemsCount
                        ));
                totalPages += actionProposedID2ItemsCount;
            }
            if (repsToCreate.Select(instance => instance.RepID).Contains(6))
            {
                actionProposedID3Items       = new TreesSummaryBLL().GetItems(project_Organisms, 3, true);
                actionProposedID3ItemsCount += Reports.GetPageCountOrDefault(maxLines, actionProposedID3Items.Count);
                idexes.Add(
                    new Index(
                        repsToCreate.Where(instance => instance.RepID == 6).Select(instance => instance.RepName).First(),
                        6,
                        totalPages + 1,
                        totalPages + actionProposedID3ItemsCount
                        ));
                totalPages += actionProposedID3ItemsCount;
            }
            if (repsToCreate.Select(instance => instance.RepID).Contains(7))
            {
                actionProposedID4Items       = new TreesSummaryBLL().GetItems(project_Organisms, 4, true);
                actionProposedID4ItemsCount += Reports.GetPageCountOrDefault(maxLines, actionProposedID4Items.Count);
                idexes.Add(
                    new Index(
                        repsToCreate.Where(instance => instance.RepID == 7).Select(instance => instance.RepName).First(),
                        7,
                        totalPages + 1,
                        totalPages + actionProposedID4ItemsCount
                        ));
                totalPages += actionProposedID4ItemsCount;
            }
            if (repsToCreate.Select(instance => instance.RepID).Contains(8))
            {
                idexes.Add(
                    new Index(
                        repsToCreate.Where(instance => instance.RepID == 8).Select(instance => instance.RepName).First(),
                        1,
                        totalPages + 1,
                        totalPages + 1
                        ));
                totalPages += 1;
            }
            if (repsToCreate.Select(instance => instance.RepID).Contains(2)) // Se repite el ID de inventario de arboles para anejar comentarios muy largos
            {
                treeComentaries = treeDetails.AsQueryable().DynamicOrderBy("Number").Where(instance => instance.Commentary.Trim().Length > 100).ToList();

                int totalTreeDetailsLines = 0;
                int pageCount             = 0;
                foreach (var treeDetail in treeComentaries)
                {
                    int lines = (int)Math.Ceiling((double)treeDetail.Commentary.Length / 200D);
                    if (totalTreeDetailsLines + lines > maxLines * pageCount)
                    {
                        pageCount++;
                    }

                    totalTreeDetailsLines += lines;
                }

                if (treeComentaries.Count > 0)
                {
                    idexes.Add(
                        new Index(
                            "Comentarios (Continuación)",
                            0,
                            totalPages + 1,
                            totalPages + pageCount
                            ));
                }
                //int pageCount = (int)Math.Ceiling((double)totalTreeDetailsLines / (double)maxLines);
                totalPages += pageCount;
            }

            bool hasIndex = Convert.ToBoolean(Page.RouteData.Values["createindex"] as string);
            if (hasIndex)//cbCreateIndex.Checked)
            {
                Reports.Index(isFullHeader, currentPageNumber, totalPages, "Tabla de Contenido", project, userInfo, idexes, time, pck);
            }

            foreach (Int32 reportID in repsToCreate.Select(instance => instance.RepID))
            {
                switch (reportID)
                {
                case 1:
                {
                    Reports.ProjectInfo(isFullHeader, hasIndex, currentPageNumber, totalPages, project, userInfo, time, pck);
                    currentPageNumber += 1;
                }
                break;

                case 2:
                {
                    Reports.TreeInventory(isFullHeader, hasIndex, currentPageNumber, totalPages, project, userInfo, treeDetails.AsQueryable().DynamicOrderBy("Number").ToList(), time, pck, maxLines);
                    currentPageNumber += treeDetailsCount;
                }
                break;

                case 3:
                {        // actionProposedID = 0; ALL
                    Reports.TreesSummary(isFullHeader, hasIndex, currentPageNumber, totalPages, project, userInfo, actionProposedID0Items, time, pck, maxLines);
                    currentPageNumber += actionProposedID0ItemsCount;
                }
                break;

                case 4:
                {        // actionProposedID = 1; Corte y Remoción
                    Reports.ActionProposedSummary(isFullHeader, hasIndex, currentPageNumber, totalPages, "Resumen de Corte y Remoción", project, userInfo, actionProposedID1Items, time, pck, maxLines);
                    currentPageNumber += actionProposedID1ItemsCount;
                }
                break;

                case 5:
                {        // actionProposedID = 2; Protección
                    Reports.ActionProposedSummary(isFullHeader, hasIndex, currentPageNumber, totalPages, "Resumen de Protección", project, userInfo, actionProposedID2Items, time, pck, maxLines);
                    currentPageNumber += actionProposedID2ItemsCount;
                }
                break;

                case 6:
                {        // actionProposedID = 3; Poda
                    Reports.ActionProposedSummary(isFullHeader, hasIndex, currentPageNumber, totalPages, "Resumen de Poda", project, userInfo, actionProposedID3Items, time, pck, maxLines);
                    currentPageNumber += actionProposedID3ItemsCount;
                }
                break;

                case 7:
                {        // actionProposedID = 4; Transplante
                    Reports.ActionProposedSummary(isFullHeader, hasIndex, currentPageNumber, totalPages, "Resumen de Transplante", project, userInfo, actionProposedID4Items, time, pck, maxLines);
                    currentPageNumber += actionProposedID4ItemsCount;
                }
                break;

                case 8:
                {
                    using (ExcelPackage pck2 = new OfficeOpenXml.ExcelPackage())
                    {
                        ExcelWorksheet wsTemplate = null;
                        pck2.Load(File.OpenRead(System.Web.HttpContext.Current.Server.MapPath(@"~\App_Resources\Excel\Totales.xlsx")));
                        wsTemplate = pck2.Workbook.Worksheets.First();
                        Reports.ProjectResults(isFullHeader, hasIndex, currentPageNumber, totalPages, project_Organisms, project, userInfo, time, pck, wsTemplate);
                        currentPageNumber += 1;
                    }
                }
                break;

                default:
                    break;
                }
            }

            if (treeComentaries.Count > 0 && treeDetailsCount > 0)
            {
                Reports.Comentaries(isFullHeader, hasIndex, currentPageNumber, totalPages, "Comentarios (Continuación)", project, userInfo, treeComentaries, time, pck, maxLines);
            }

            pck.Save();
            pck.Dispose();
        }

        System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
        response.ClearContent();
        response.Clear();
        response.ContentType = "application/ms-excel";
        response.AddHeader("Content-Disposition", "attachment; filename=" + name + ".xlsx");
        response.WriteFile(path + @"/" + name + ".xlsx");

        response.End();
    }
Example #3
0
    protected void OdsProject_Organism_Details_Inserted(object sender, System.Web.UI.WebControls.ObjectDataSourceStatusEventArgs e)
    {
        int result = Convert.ToInt32(e.ReturnValue, System.Globalization.CultureInfo.CurrentCulture.NumberFormat);

        //string lat = "";
        //string lon = "";
        if (result != 0)
        {
            Project_Organisms       project_Organisms       = new Project_OrganismsBLL().GetProject_OrganismsByProjectOrganismID(result);
            ProjectInfoTreeLocation projectInfoTreeLocation = new ProjectInfoTreeLocationBLL().GetProjectInfoTreeLocationsByProjectID(project_Organisms.ProjectID)[0];
            bool fromInventory = false;

            UserBLL userBLL = new UserBLL();
            Eisk.BusinessEntities.User user = userBLL.GetUserByUserName((HttpContext.Current.User.Identity).Name);

            if (user != null)
            {
                // TreeDetail
                TextBox     txtVaras      = (TextBox)formViewTlProject_Organism.FindControl("txtVaras");
                HiddenField hfDap         = (HiddenField)formViewTlProject_Organism.FindControl("hfDap");
                TextBox     txtDap        = (TextBox)formViewTlProject_Organism.FindControl("txtDap");
                TextBox     txtDapCounter = (TextBox)formViewTlProject_Organism.FindControl("txtDapCounter");
                TextBox     txtHeight     = (TextBox)formViewTlProject_Organism.FindControl("txtHeight");
                TextBox     txtCommentary = (TextBox)formViewTlProject_Organism.FindControl("txtCommentary");

                Label   lblNumber = (Label)formViewTlProject_Organism.FindControl("lblNumber");
                TextBox txtX      = (TextBox)formViewTlProject_Organism.FindControl("txtX");
                TextBox txtY      = (TextBox)formViewTlProject_Organism.FindControl("txtY");
                TextBox txtLat    = (TextBox)formViewTlProject_Organism.FindControl("txtLat");
                TextBox txtLon    = (TextBox)formViewTlProject_Organism.FindControl("txtLon");

                RadioButtonList rblActionProposed = (RadioButtonList)formViewTlProject_Organism.FindControl("rblActionProposed");
                RadioButtonList rblCondition      = (RadioButtonList)formViewTlProject_Organism.FindControl("rblCondition");

                // ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                // Edgardo Ramos - 20130928
                CheckBox chkLittoral     = (CheckBox)formViewTlProject_Organism.FindControl("chkLittoral");
                CheckBox chkMaritimeZone = (CheckBox)formViewTlProject_Organism.FindControl("chkMaritimeZone");
                // ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

                TreeDetail treeDetail = new TreeDetail();

                if (!string.IsNullOrEmpty(txtVaras.Text) && txtVaras.Text != "0") // Is Cepa
                {
                    treeDetail.Dap         = 0;
                    treeDetail.Dap_Counter = 0;
                }
                else if (txtDapCounter.Text == "1") // Solo un Dap
                {
                    //treeDetail.Dap = Convert.ToDecimal(txtDap.Text);// new DapBLL().GetDap(0);
                    //treeDetail.Dap_Counter = Convert.ToInt32(txtDapCounter.Text); //new DapBLL().GetDapCount(0);
                    treeDetail.Dap         = Convert.ToDecimal(hfDap.Value); // new DapBLL().GetDap(0);
                    treeDetail.Dap_Counter = Convert.ToInt32(1);             //new DapBLL().GetDapCount(0);
                }
                else // Mas de un Dap
                {
                    string[] daps     = hfDap.Value.Split(',');
                    double   dapTotal = 0;
                    foreach (string dap in daps)
                    {
                        dapTotal += Convert.ToDouble(dap);
                    }//dapTotal;// new DapBLL().GetDap(0);
                    treeDetail.Dap         = Convert.ToDecimal(Math.Round(Math.Sqrt(Math.Pow(dapTotal, 2D) / Convert.ToDouble(daps.Count())) * 100) / 100);
                    treeDetail.Dap_Counter = Convert.ToInt32(txtDapCounter.Text); //new DapBLL().GetDapCount(0);
                }

                treeDetail.Varas = Convert.ToInt32(string.IsNullOrEmpty(txtVaras.Text) ? "0" : txtVaras.Text);

                treeDetail.Height     = Convert.ToDecimal(txtHeight.Text);
                treeDetail.Commentary = (txtCommentary.Text.Length > txtCommentary.MaxLength) ? txtCommentary.Text.Substring(0, txtCommentary.MaxLength) : txtCommentary.Text;

                treeDetail.Number = Convert.ToInt32(lblNumber.Text);


                // ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                // Edgardo Ramos - 20130928
                decimal         dec;
                RadioButtonList rblPosition = (RadioButtonList)formViewTlProject_Organism.FindControl("rblPosition");

                if (rblPosition.SelectedValue == "0") // Nad83
                {
                    treeDetail.X = decimal.TryParse(txtX.Text, out dec) ? Convert.ToDecimal(txtX.Text) : 0;
                    treeDetail.Y = decimal.TryParse(txtY.Text, out dec) ? Convert.ToDecimal(txtY.Text) : 0;

                    if (treeDetail.X != 0 && treeDetail.Y != 0)
                    {
                        Dictionary <string, object> anewpointObj = Utility.ConvertToLatLng(treeDetail.X.ToString(), treeDetail.Y.ToString(), @"~/App_Resources/client-scripts/tl/");

                        treeDetail.Lat = Convert.ToDecimal(anewpointObj["y"]);
                        txtLat.Text    = treeDetail.Lat.ToString();
                        treeDetail.Lon = Convert.ToDecimal(anewpointObj["x"]);
                        txtLon.Text    = treeDetail.Lon.ToString();
                    }
                    else
                    {
                        treeDetail.Lat = 0;
                        treeDetail.Lon = 0;
                    }
                }
                else // StatePlanes
                {
                    treeDetail.Lat = decimal.TryParse(txtLat.Text, out dec) ? Convert.ToDecimal(txtLat.Text) : 0;
                    treeDetail.Lon = decimal.TryParse(txtLon.Text, out dec) ? Convert.ToDecimal(txtLon.Text) : 0;

                    if (treeDetail.Lat != 0 && treeDetail.Lon != 0)
                    {
                        Dictionary <string, object> anewpointObj = Utility.ConvertToStatePlane(treeDetail.Lon.ToString(), treeDetail.Lat.ToString(), @"~/App_Resources/client-scripts/tl/");

                        treeDetail.X = Convert.ToDecimal(anewpointObj["x"]);
                        txtX.Text    = treeDetail.X.ToString();
                        treeDetail.Y = Convert.ToDecimal(anewpointObj["y"]);
                        txtY.Text    = treeDetail.Y.ToString();
                    }
                    else
                    {
                        treeDetail.X = 0;
                        treeDetail.Y = 0;
                    }
                }

                //treeDetail.X = Convert.ToDecimal(txtX.Text);
                //treeDetail.Y = Convert.ToDecimal(txtY.Text);
                //treeDetail.Lat = Convert.ToDecimal(txtLat.Text);
                //treeDetail.Lon = Convert.ToDecimal(txtLon.Text);

                treeDetail.Littoral     = chkLittoral.Checked;
                treeDetail.MaritimeZone = chkMaritimeZone.Checked;

                // ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

                treeDetail.CreatedDate   = DateTime.Now;
                treeDetail.CreatorUserID = user.UserID;
                treeDetail.EditedDate    = DateTime.Now;
                treeDetail.EditorUserID  = user.UserID;

                ActionProposed actionProposed = new ActionProposedBLL().GetActionProposedByActionProposedID(Convert.ToInt32(rblActionProposed.SelectedValue));
                treeDetail.ActionProposedID = actionProposed.ActionProposedID;
                treeDetail.ActionProposedReference.EntityKey = actionProposed.EntityKey;

                Condition condition = new ConditionBLL().GetConditionByConditionID(Convert.ToInt32(rblCondition.SelectedValue));
                treeDetail.ConditionID = condition.ConditionID;
                treeDetail.ConditionReference.EntityKey = condition.EntityKey;

                treeDetail.ProjectOrganismID = project_Organisms.ProjectOrganismID;
                treeDetail.Project_OrganismsReference.EntityKey = project_Organisms.EntityKey;

                int treeDetailID = new TreeDetailBLL().CreateNewTreeDetail(treeDetail);

                if (treeDetail.Varas != null && treeDetail.Varas > 0) // Is Cepa
                {
                    //
                }
                else if (txtDapCounter.Text == "1") // Solo un Dap
                {
                    Dap dap = new Dap();
                    dap.DapValue      = Convert.ToDecimal(hfDap.Value);
                    dap.TreeDetailsID = treeDetailID;
                    dap.TreeDetailReference.EntityKey = treeDetail.EntityKey;

                    new DapBLL().CreateNewDap(dap);
                }
                else // Mas de un Dap
                {
                    string[] daps = hfDap.Value.Split(',');
                    foreach (string dapString in daps)
                    {
                        Dap dap = new Dap();
                        dap.DapValue      = Convert.ToDecimal(dapString);
                        dap.TreeDetailsID = treeDetailID;
                        dap.TreeDetailReference.EntityKey = treeDetail.EntityKey;

                        new DapBLL().CreateNewDap(dap);
                    }
                }

                fromInventory = Convert.ToDecimal(projectInfoTreeLocation.X) == Convert.ToDecimal(treeDetail.X) && Convert.ToDecimal(projectInfoTreeLocation.Y) == Convert.ToDecimal(treeDetail.Y);
                //
            }

            if (fromInventory)
            {
                Response.RedirectToRoute("tl-treeinventory", new { project_id = RouteData.Values["project_id"] });
            }
            else
            {
                Response.RedirectToRoute("tl", new { Project_id = RouteData.Values["Project_id"] });
                Response.RedirectLocation += "?poid=" + project_Organisms.ProjectOrganismID + "&lat=0&lon=0";
            }

            //Response.RedirectToRoute("tl-tree-details_edit", new { edit_mode = "edit", project_id = Page.RouteData.Values["project_id"] as string, project_organism_id = result });
        }
    }
Example #4
0
        protected void btnCloneSelected_Click(object sender, EventArgs e)
        {
            pnlCloneError.Style["display"] = "none";
            lblCloneError.Text             = "";
            string invalidMessage = "";
            string successMessage = "";

            bool dapOrVaras = false;

            if (pnlCloneDap.Visible)
            {
                dapOrVaras = chkCloneDap.Checked;
            }
            else
            {
                dapOrVaras = chkCloneVaras.Checked;
            }

            #region Validate Characteristics
            if (
                !chkCloneNombre.Checked &&
                !dapOrVaras &&
                !chkAltura.Checked &&
                !chkAcciónPropuesta.Checked &&
                !chkCondicion.Checked &&
                !chkLitoral.Checked &&
                !chkMaritimoTerrestre.Checked &&
                !chkComentarios.Checked
                )
            {
                invalidMessage += " • Seleccione al menos una característica <br />";
            }
            #endregion

            #region Validate Árbol a ser Clonado
            Project_Organisms project_OrganismBase;
            if (!Project_OrganismsBLL.TryParse_ByNumber(txtCloneBase.Text, out project_OrganismBase))
            {
                invalidMessage = " • Número del Árbol a ser Copiado Inválido<br />";
            }
            #endregion

            List <Project_Organisms> ProjectOrganismsIDsToClone = new List <Project_Organisms>();
            Project_Organisms        project_OrganismFROM       = null;
            Project_Organisms        project_OrganismTO         = null;

            if (!rbtCloneRange.Checked && rbtCloneSelect.Checked)
            {// Selected
                #region validate selected

                // Iterate through the Projects.Rows property
                foreach (GridViewRow row in gridViewTreeDetails.Rows)
                {
                    // Access the CheckBox
                    CheckBox cb = (CheckBox)(row.FindControl("chkTreeDetailsSelector"));
                    if (cb != null && cb.Checked)
                    {
                        // Save the ProjectID value for deletion
                        // First, get the ProjectID for the selected row
                        Int32 treeDetailsID = (Int32)gridViewTreeDetails.DataKeys[row.RowIndex].Value;
                        Eisk.BusinessEntities.TreeDetail treeDetail = new TreeDetailBLL().GetTreeDetailByTreeDetailsID(treeDetailsID);
                        ProjectOrganismsIDsToClone.Add(treeDetail.Project_Organisms);
                    }
                }

                if (ProjectOrganismsIDsToClone.Count == 0)
                {
                    invalidMessage += " • Para copiar las características a los árboles previamente seleccionados debe seleccionar al menos uno <br />";
                }
                #endregion
            }
            else
            {// Range
                #region validate range

                if (!Project_OrganismsBLL.TryParse_ByNumber(txtCloneFrom.Text, out project_OrganismFROM))
                {
                    invalidMessage += " • Número del Árbol " + '"' + "Desde" + '"' + " Inválido <br />";
                }

                if (!Project_OrganismsBLL.TryParse_ByNumber(txtCloneTo.Text, out project_OrganismTO))
                {
                    invalidMessage += " • Número del Árbol " + '"' + "Hasta" + '"' + " Inválido <br />";
                }

                if (project_OrganismFROM != null && project_OrganismTO != null)
                {
                    if (project_OrganismFROM.TreeDetails.First().Number > project_OrganismTO.TreeDetails.First().Number)
                    {
                        invalidMessage += " • Número del Árbol " + '"' + "Desde" + '"' + " menor que " + '"' + "Hasta" + '"' + " <br />";
                    }
                }
                #endregion
            }

            if (!string.IsNullOrEmpty(invalidMessage))
            {
                pnlCloneError.Style["display"] = "block";
                pnlLoading.Style["display"]    = "block";
                pnlClone.Style["display"]      = "block";
                pnlCloneRange.Style["display"] = (rbtCloneRange.Checked) ? "block" : "none";
                lblCloneError.Text             = "<strong>Favor validar los siguientes detalles:</strong><br />" + invalidMessage;
                return;
            }
            else
            {
                using (DatabaseContext _DatabaseContext = new DatabaseContext())
                {
                    var treeDetailBASE = project_OrganismBase.TreeDetails.First();
                    if (!rbtCloneRange.Checked && rbtCloneSelect.Checked)
                    {// Selected
                        foreach (var projectOrganism in ProjectOrganismsIDsToClone)
                        {
                            var projectOrganismTHIS = _DatabaseContext.Project_Organisms.Where(i => i.ProjectOrganismID == projectOrganism.ProjectOrganismID).First();
                            var treeDetailTHIS      = _DatabaseContext.TreeDetails.First(i => i.ProjectOrganismID == projectOrganismTHIS.ProjectOrganismID);

                            if (chkCloneNombre.Checked)
                            {
                                Organism organism = new OrganismBLL().GetOrganismByOrganismID(project_OrganismBase.OrganismID);
                                projectOrganismTHIS.OrganismID = organism.OrganismID;
                                projectOrganismTHIS.OrganismReference.EntityKey = organism.EntityKey;
                            }

                            foreach (var item in _DatabaseContext.Daps.Where(instance => instance.TreeDetailsID == treeDetailTHIS.TreeDetailsID).ToList())
                            {
                                _DatabaseContext.Daps.DeleteObject(item);
                            }

                            if (chkCloneVaras.Checked)
                            {
                                treeDetailTHIS.Varas = treeDetailBASE.Varas;
                            }

                            if (chkCloneDap.Checked)
                            {
                                treeDetailTHIS.Dap         = treeDetailBASE.Dap;
                                treeDetailTHIS.Dap_Counter = treeDetailBASE.Dap_Counter;

                                foreach (var dap in treeDetailBASE.Daps)
                                {
                                    Dap dapTHIS = new Dap();
                                    dapTHIS.DapValue      = dap.DapValue;
                                    dapTHIS.TreeDetailsID = treeDetailTHIS.TreeDetailsID;
                                    dapTHIS.TreeDetailReference.EntityKey = treeDetailTHIS.EntityKey;

                                    _DatabaseContext.Daps.AddObject(dapTHIS);
                                }
                            }

                            if (chkAltura.Checked)
                            {
                                treeDetailTHIS.Height = treeDetailBASE.Height;
                            }

                            if (chkAcciónPropuesta.Checked)
                            {
                                ActionProposed actionProposed = new ActionProposedBLL().GetActionProposedByActionProposedID(Convert.ToInt32(treeDetailBASE.ActionProposedID));
                                treeDetailTHIS.ActionProposedID = actionProposed.ActionProposedID;
                                treeDetailTHIS.ActionProposedReference.EntityKey = actionProposed.EntityKey;
                            }

                            if (chkCondicion.Checked)
                            {
                                Condition condition = new ConditionBLL().GetConditionByConditionID(Convert.ToInt32(treeDetailBASE.ConditionID));
                                treeDetailTHIS.ConditionID = condition.ConditionID;
                                treeDetailTHIS.ConditionReference.EntityKey = condition.EntityKey;
                            }

                            if (chkLitoral.Checked)
                            {
                                treeDetailTHIS.Littoral = treeDetailBASE.Littoral;
                            }

                            if (chkMaritimoTerrestre.Checked)
                            {
                                treeDetailTHIS.MaritimeZone = treeDetailBASE.MaritimeZone;
                            }

                            if (chkComentarios.Checked)
                            {
                                treeDetailTHIS.Commentary = treeDetailBASE.Commentary;
                            }
                        }
                        successMessage = "Las siguientes cararcterísticas del árbol #" + txtCloneBase.Text + " han sido copiadas satisfactóriamente a los " + ProjectOrganismsIDsToClone.Count + " árboles seleccionados: ";
                    }
                    else
                    {// Range
                        int from = project_OrganismFROM.TreeDetails.FirstOrDefault().Number.Value;
                        int to   = project_OrganismTO.TreeDetails.FirstOrDefault().Number.Value;
                        for (int i = from; i <= to; i++)
                        {
                            var projectOrganismTHIS = _DatabaseContext.Project_Organisms.Where(instance => instance.TreeDetails.FirstOrDefault().Number == i).First();
                            var treeDetailTHIS      = _DatabaseContext.TreeDetails.First(instance => instance.ProjectOrganismID == projectOrganismTHIS.ProjectOrganismID);

                            if (chkCloneNombre.Checked)
                            {
                                Organism organism = new OrganismBLL().GetOrganismByOrganismID(project_OrganismBase.OrganismID);
                                projectOrganismTHIS.OrganismID = organism.OrganismID;
                                projectOrganismTHIS.OrganismReference.EntityKey = organism.EntityKey;
                            }

                            foreach (var item in _DatabaseContext.Daps.Where(instance => instance.TreeDetailsID == treeDetailTHIS.TreeDetailsID).ToList())
                            {
                                _DatabaseContext.Daps.DeleteObject(item);
                            }

                            if (chkCloneVaras.Checked)
                            {
                                treeDetailTHIS.Varas = treeDetailBASE.Varas;
                            }

                            if (chkCloneDap.Checked)
                            {
                                treeDetailTHIS.Dap         = treeDetailBASE.Dap;
                                treeDetailTHIS.Dap_Counter = treeDetailBASE.Dap_Counter;

                                foreach (var dap in treeDetailBASE.Daps)
                                {
                                    Dap dapTHIS = new Dap();
                                    dapTHIS.DapValue      = dap.DapValue;
                                    dapTHIS.TreeDetailsID = treeDetailTHIS.TreeDetailsID;
                                    dapTHIS.TreeDetailReference.EntityKey = treeDetailTHIS.EntityKey;

                                    _DatabaseContext.Daps.AddObject(dapTHIS);
                                }
                            }

                            if (chkAltura.Checked)
                            {
                                treeDetailTHIS.Height = treeDetailBASE.Height;
                            }

                            if (chkAcciónPropuesta.Checked)
                            {
                                ActionProposed actionProposed = new ActionProposedBLL().GetActionProposedByActionProposedID(Convert.ToInt32(treeDetailBASE.ActionProposedID));
                                treeDetailTHIS.ActionProposedID = actionProposed.ActionProposedID;
                                treeDetailTHIS.ActionProposedReference.EntityKey = actionProposed.EntityKey;
                            }

                            if (chkCondicion.Checked)
                            {
                                Condition condition = new ConditionBLL().GetConditionByConditionID(Convert.ToInt32(treeDetailBASE.ConditionID));
                                treeDetailTHIS.ConditionID = condition.ConditionID;
                                treeDetailTHIS.ConditionReference.EntityKey = condition.EntityKey;
                            }

                            if (chkLitoral.Checked)
                            {
                                treeDetailTHIS.Littoral = treeDetailBASE.Littoral;
                            }

                            if (chkMaritimoTerrestre.Checked)
                            {
                                treeDetailTHIS.MaritimeZone = treeDetailBASE.MaritimeZone;
                            }

                            if (chkComentarios.Checked)
                            {
                                treeDetailTHIS.Commentary = treeDetailBASE.Commentary;
                            }
                        }
                        successMessage = "Las siguientes cararcterísticas del árbol <b>#" + txtCloneBase.Text + "</b> han sido copiadas satisfactóriamente a los árboles desde el árbol <b>#" + from + "</b> al árbol <b>#" + to + "</b>: <br />";
                    }

                    if (chkCloneNombre.Checked)
                    {
                        successMessage += "<b> • Nombre Común - Nombre Científico</b><br />";
                    }
                    if (chkCloneVaras.Checked)
                    {
                        successMessage += "<b> • Varas</b><br />";
                    }
                    if (chkCloneDap.Checked)
                    {
                        successMessage += "<b> • D.A.P</b><br />";
                    }
                    if (chkAltura.Checked)
                    {
                        successMessage += "<b> • Altura (pies)</b><br />";
                    }
                    if (chkAcciónPropuesta.Checked)
                    {
                        successMessage += "<b> • Acción Propuesta</b><br />";
                    }
                    if (chkCondicion.Checked)
                    {
                        successMessage += "<b> • Condición</b><br />";
                    }
                    if (chkLitoral.Checked)
                    {
                        successMessage += "<b> • Árbol en la Servidumbre de Vigilancia de Litoral</b><br />";
                    }
                    if (chkMaritimoTerrestre.Checked)
                    {
                        successMessage += "<b> • Árbol en la Zona Marítimo Terrestre</b><br />";
                    }
                    if (chkComentarios.Checked)
                    {
                        successMessage += "<b> • Comentarios</b>";
                    }

                    _DatabaseContext.SaveChanges();
                    pnlCloneRange.Style["display"] = (rbtCloneRange.Checked) ? "block" : "none";

                    gridViewTreeDetails.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
                    gridViewTreeDetails.DataBind();

                    ltlMessage.Text += MessageFormatter.GetFormattedSuccessMessage(successMessage);

                    btnClear_Click(null, null);
                    pnlClone.Style["display"]   = "none";
                    pnlLoading.Style["display"] = "none";
                }
            }
        }
Example #5
0
        protected void ButtonDeleteSelected_Click(object sender, System.EventArgs e)
        {
            try
            {
                // Create a List to hold the ProjectID values to delete
                List <Int32> TreeDetailIDsToDelete       = new List <Int32>();
                List <Int32> ProjectOrganismsIDsToDelete = new List <Int32>();
                List <Int32> DapIDsToDelete = new List <Int32>();

                // Iterate through the Projects.Rows property
                foreach (GridViewRow row in gridViewTreeDetails.Rows)
                {
                    // Access the CheckBox
                    CheckBox cb = (CheckBox)(row.FindControl("chkTreeDetailsSelector"));
                    if (cb != null && cb.Checked)
                    {
                        // Save the ProjectID value for deletion
                        // First, get the ProjectID for the selected row
                        Int32 treeDetailsID = (Int32)gridViewTreeDetails.DataKeys[row.RowIndex].Value;
                        Eisk.BusinessEntities.TreeDetail treeDetail = new TreeDetailBLL().GetTreeDetailByTreeDetailsID(treeDetailsID);

                        List <Int32> tempDaps = new DapBLL().GetDapsByTreeDetailsID(treeDetailsID).Select(instance => instance.DapID).ToList();

                        // Add it to the List...
                        ProjectOrganismsIDsToDelete.Add(treeDetail.ProjectOrganismID);
                        TreeDetailIDsToDelete.Add(treeDetail.TreeDetailsID);
                        DapIDsToDelete.AddRange(tempDaps);
                    }
                }

                using (DatabaseContext _DatabaseContext = new DatabaseContext())
                {
                    foreach (int dapID in DapIDsToDelete)
                    {
                        Dap dap = _DatabaseContext.Daps.First(instance => instance.DapID == dapID);
                        _DatabaseContext.Daps.DeleteObject(dap);

                        _DatabaseContext.SaveChanges();
                    }
                    foreach (int treeDetailsID in TreeDetailIDsToDelete)
                    {
                        TreeDetail treeDetail = _DatabaseContext.TreeDetails.First(instance => instance.TreeDetailsID == treeDetailsID);
                        _DatabaseContext.TreeDetails.DeleteObject(treeDetail);

                        _DatabaseContext.SaveChanges();
                    }
                    foreach (int ProjectOrganismID in ProjectOrganismsIDsToDelete)
                    {
                        Project_Organisms project_Organism = _DatabaseContext.Project_Organisms.First(instance => instance.ProjectOrganismID == ProjectOrganismID);
                        _DatabaseContext.Project_Organisms.DeleteObject(project_Organism);

                        _DatabaseContext.SaveChanges();
                    }

                    //Sort Numbers after deleting
                    int projectIDINT = Convert.ToInt32(RouteData.Values["Project_id"]);
                    List <TreeDetail> treeDetails =
                        _DatabaseContext.TreeDetails
                        .Where(instance => instance.Project_Organisms.ProjectID == projectIDINT)
                        .OrderBy(instance => instance.Number)
                        .ToList();

                    int number = 1;
                    foreach (TreeDetail tDetail in treeDetails)
                    {
                        tDetail.Number = number;
                        number++;
                    }
                    //

                    _DatabaseContext.SaveChanges();
                }

                // Add a confirmation message
                ltlMessage.Text += String.Format(MessageFormatter.GetFormattedSuccessMessage("Eliminación de árboles satisfactoria. <b>{0}</b> árboles eliminados"), ProjectOrganismsIDsToDelete.Count);
            }
            catch (Exception ex)
            {
                ltlMessage.Text = ExceptionManager.DoLogAndGetFriendlyMessageForException(ex);
            }

            //binding the grid
            gridViewTreeDetails.PageIndex = 0;
            gridViewTreeDetails.PageSize  = Convert.ToInt32(ddlPageSize.SelectedValue);
            gridViewTreeDetails.DataBind();
        }