예제 #1
0
        private string GetJiraWorkHours(string jiraKey, DateTime workDate, int personId)
        {
            string workHours = string.Empty;

            if (!string.IsNullOrEmpty(jiraKey) && jiraKey != "N/A")
            {
                var data = new ScheduleDetailDataModel();
                if (personId == 0)
                {
                    data.WorkTicket   = jiraKey;
                    data.ToSearchDate = workDate;   // toDate is WorkDate, so we can find the total hours developer worked on that issue upto that date.
                }
                else
                {
                    data.WorkTicket   = jiraKey;
                    data.PersonId     = personId;
                    data.ToSearchDate = workDate;   // toDate is WorkDate, so we can find the total hours developer worked on that issue upto that date.
                }

                var dt = ScheduleDetailDataManager.Search(data, SessionVariables.RequestProfile);
                if (dt != null && dt.Rows.Count > 0)
                {
                    // get count
                    workHours = (from row in dt.AsEnumerable()
                                 select Convert.ToDecimal(row["DateDiffHrs"])).Sum().ToString("0.00");
                }
            }

            return(workHours);
        }
예제 #2
0
        protected void gvScheduleDetails_Updating(object sender, GridViewUpdateEventArgs e)
        {
            var lblScheduleDetailID = (Label)gvScheduleDetails.Rows[e.RowIndex].FindControl("lblScheduleDetailId");
            var lblEditScheduleId   = (Label)gvScheduleDetails.Rows[e.RowIndex].FindControl("lblScheduleId");
            var drpScheduleDetailActivityCategory = (DropDownList)gvScheduleDetails.Rows[e.RowIndex].FindControl("drpScheduleDetailActivityCategory");
            var txtEditInTime  = (TextBox)gvScheduleDetails.Rows[e.RowIndex].FindControl("txtEditInTime");
            var txtEditOutTime = (TextBox)gvScheduleDetails.Rows[e.RowIndex].FindControl("txtEditOutTime");
            var txtWorkTicket  = (TextBox)gvScheduleDetails.Rows[e.RowIndex].FindControl("txtWorkTicket");
            var txtEditMessage = (TextBox)gvScheduleDetails.Rows[e.RowIndex].FindControl("txtEditMessage");
            var lblCreatedDate = (Label)gvScheduleDetails.Rows[e.RowIndex].FindControl("txtEditCreatedDate");

            var data = new ScheduleDetailDataModel();

            data.ScheduleDetailId = Convert.ToInt32(lblScheduleDetailID.Text);
            data.ScheduleId       = Convert.ToInt32(lblEditScheduleId.Text);
            data.ScheduleDetailActivityCategoryId = Convert.ToInt32(drpScheduleDetailActivityCategory.SelectedValue);

            var dtInTime = Convert.ToDateTime(txtEditInTime.Text.Trim());

            data.InTime = DateTime.Parse(dtInTime.ToString("t"), null);

            var dtOutTime = Convert.ToDateTime(txtEditOutTime.Text.Trim());

            data.OutTime = DateTime.Parse(dtOutTime.ToString("t"), null);

            data.WorkTicket  = txtWorkTicket.Text.Trim();
            data.Message     = txtEditMessage.Text;
            data.CreatedDate = DateTime.Parse(lblCreatedDate.Text);

            ScheduleDetailDataManager.Update(data, SessionVariables.RequestProfile);
            GetData(Convert.ToInt32(lblEditScheduleId.Text));
            gvScheduleDetails.EditIndex = -1;
            gvScheduleDetails.DataBind();
        }
예제 #3
0
        protected override void ShowData(int scheduleDetailId)
        {
            base.ShowData(scheduleDetailId);

            oDetailButtonPanel.SetId = SetId;

            Clear();

            var data = new ScheduleDetailDataModel();

            data.ScheduleDetailId = scheduleDetailId;

            var items = ScheduleDetailDataManager.GetEntityDetails(data, SessionVariables.RequestProfile);

            if (items.Count == 1)
            {
                var item = items[0];

                lblScheduleDetailId.Text = item.ScheduleDetailId.ToString();
                lblScheduleId.Text       = item.ScheduleId.ToString();
                lblInTime.Text           = String.Format("{0:t}", item.InTime);
                lblOutTime.Text          = String.Format("{0:t}", item.OutTime);
                lblMessage.Text          = item.Message;
                lblWorkTicket.Text       = item.WorkTicket;
                lblScheduleDetailActivityCategory.Text = item.ScheduleDetailActivityCategory;
                lblCreatedByAuditId.Text  = item.CreatedByAuditId.ToString();
                lblModifiedByAuditId.Text = item.ModifiedByAuditId.ToString();
                lblCreatedDate.Text       = item.CreatedDate.Value.ToString(SessionVariables.UserDateFormat);
                lblModifiedDate.Text      = item.ModifiedDate.Value.ToString(SessionVariables.UserDateFormat);

                oUpdateInfo.LoadText(item.UpdatedDate, item.UpdatedBy, item.LastAction);

                oHistoryList.Setup(PrimaryEntity, scheduleDetailId, "ScheduleDetail");
            }
        }
예제 #4
0
        private void BindData()
        {
            if (XAxisColumn != YAxisColumn)
            {
                var objModel = new ScheduleDetailDataModel();

                if (drpPersons.SelectedValue != "-1")
                {
                    objModel.PersonId = Convert.ToInt32(drpPersons.SelectedValue);
                }

                if (drpWorkCategory.SelectedValue != "-1")
                {
                    objModel.ScheduleDetailActivityCategoryId = Convert.ToInt32(drpWorkCategory.SelectedValue);
                }

                objModel.FromSearchDate = oDateRange.FromDate;
                objModel.ToSearchDate   = oDateRange.ToDate;
                objModel.Message        = txtMessage.Text.Trim();

                var dt = ScheduleDetailDataManager.Search(objModel, SessionVariables.RequestProfile);

                if (dt.Rows.Count > 0)
                {
                    var xValues = (from row in dt.AsEnumerable()
                                   select row[XAxisColumn].ToString().Trim())
                                  .Distinct(StringComparer.CurrentCultureIgnoreCase).ToList();

                    var yValues = (from row in dt.AsEnumerable()
                                   select row[YAxisColumn].ToString().Trim())
                                  .Distinct(StringComparer.CurrentCultureIgnoreCase).ToList();

                    var tableElement = new HtmlGenericControl("table");
                    tableElement.Attributes["class"] = "table table-bordered";

                    AddHeaderRow(xValues, tableElement, dt);

                    foreach (var yValue in yValues)
                    {
                        var yTextValue = yValue;
                        if (YAxisColumn != YAxisColumnText)
                        {
                            yTextValue = (from row in dt.AsEnumerable()
                                          where row[YAxisColumn].ToString() == yValue
                                          select row[YAxisColumnText].ToString()).First();
                        }
                        AddDetailRow(yValue, yTextValue, xValues, dt, tableElement);
                    }

                    if (AggeregateVisibility == "xAxis" || AggeregateVisibility == "Both")
                    {
                        AddAggeregateRow(xValues, dt, tableElement);
                    }

                    contentHolder.Controls.Add(tableElement);
                }
            }
        }
예제 #5
0
        protected int GetData()
        {
            var data   = new ScheduleDetailDataModel();
            var dt     = ScheduleDetailDataManager.Search(data, SessionVariables.RequestProfile);
            var maxRow = dt.Select("ScheduleDetailId = MAX(ScheduleDetailId)");
            var maxScheduleDetailId = Convert.ToInt32(maxRow[0]["ScheduleDetailId"].ToString());

            return(maxScheduleDetailId + 1);
        }
예제 #6
0
        protected override DataTable GetEntityData(int?entityKey)
        {
            var scheduleDetaildata = new ScheduleDetailDataModel();

            scheduleDetaildata.ScheduleDetailId = entityKey;
            var results = ScheduleDetailDataManager.Search(scheduleDetaildata, SessionVariables.RequestProfile);

            return(results);
        }
예제 #7
0
        private DataTable GetScheduleDetailData(int scheduleId)
        {
            var data = new ScheduleDetailDataModel();

            data.ScheduleId = scheduleId;

            var dt = ScheduleDetailDataManager.Search(data, SessionVariables.RequestProfile);

            return(dt);
        }
예제 #8
0
        public void SendMail(int?scheduleId, string mailFormat, string toEmailAddress, string ccEmailAddress, string fromEmailAddress,
                             bool isPreview, RequestProfile requestProfile)
        {
            var data = new ScheduleDetailDataModel();

            data.ScheduleId = scheduleId;
            var dt = ScheduleDetailDataManager.Search(data, requestProfile);

            if (dt.Rows.Count != 0)
            {
                FormatMail(dt, mailFormat, toEmailAddress, ccEmailAddress, fromEmailAddress, isPreview, requestProfile);
            }
        }
예제 #9
0
        private DataTable GetScheduleDetailData(string key)
        {
            var scheduleId = int.Parse(key);
            var dt         = ScheduleDetailDataManager.GetBySchedule(scheduleId, SessionVariables.RequestProfile);

            //var scheduleQuestiondt = ScheduleQuestionDataManager.GetList(AuditId);
            //var resultdt = scheduleQuestiondt.Clone();

            //foreach (DataRow row in dt.Rows)
            //{
            //	var rows = scheduleQuestiondt.Select("ScheduleQuestionId = " + row[ScheduleQuestionDataModel.DataColumns.ScheduleQuestionId]);
            //	resultdt.ImportRow(rows[0]);
            //}

            return(dt);
        }
예제 #10
0
        protected override DataTable UpdateData()
        {
            var UpdatedData = new DataTable();
            var data        = new ScheduleDetailDataModel();

            UpdatedData = ScheduleDetailDataManager.Search(data, SessionVariables.RequestProfile).Clone();
            for (var i = 0; i < SelectedData.Rows.Count; i++)
            {
                data.ScheduleDetailId =
                    Convert.ToInt32(SelectedData.Rows[i][ScheduleDetailDataModel.DataColumns.ScheduleDetailId].ToString());

                data.ScheduleId =
                    Convert.ToInt32(SelectedData.Rows[i][ScheduleDetailDataModel.DataColumns.ScheduleId].ToString());

                data.InTime =
                    !string.IsNullOrEmpty(CheckAndGetRepeaterTextBoxValue(ScheduleDetailDataModel.DataColumns.InTime))
                                        ? DateTime.Parse(CheckAndGetRepeaterTextBoxValue(ScheduleDetailDataModel.DataColumns.InTime).ToString())
                                        : DateTime.Parse(SelectedData.Rows[i][ScheduleDetailDataModel.DataColumns.InTime].ToString());

                data.OutTime =
                    !string.IsNullOrEmpty(CheckAndGetRepeaterTextBoxValue(ScheduleDetailDataModel.DataColumns.OutTime))
                                        ? DateTime.Parse(CheckAndGetRepeaterTextBoxValue(ScheduleDetailDataModel.DataColumns.OutTime).ToString())
                                        : DateTime.Parse(SelectedData.Rows[i][ScheduleDetailDataModel.DataColumns.OutTime].ToString());

                data.Message =
                    !string.IsNullOrEmpty(CheckAndGetRepeaterTextBoxValue(ScheduleDetailDataModel.DataColumns.Message))
                                        ? CheckAndGetRepeaterTextBoxValue(ScheduleDetailDataModel.DataColumns.Message).ToString()
                                        : SelectedData.Rows[i][ScheduleDetailDataModel.DataColumns.Message].ToString();

                data.CreatedDate =
                    !string.IsNullOrEmpty(CheckAndGetRepeaterTextBoxValue(BaseDataModel.BaseDataColumns.CreatedDate))
                                        ? DateTime.Parse(CheckAndGetRepeaterTextBoxValue(BaseDataModel.BaseDataColumns.CreatedDate).ToString())
                                        : DateTime.Parse(SelectedData.Rows[i][BaseDataModel.BaseDataColumns.CreatedDate].ToString());

                ScheduleDetailDataManager.Update(data, SessionVariables.RequestProfile);
                data = new ScheduleDetailDataModel();
                data.ScheduleDetailId = Convert.ToInt32(SelectedData.Rows[i][ScheduleDetailDataModel.DataColumns.ScheduleDetailId].ToString());
                var dt = ScheduleDetailDataManager.Search(data, SessionVariables.RequestProfile);

                if (dt.Rows.Count == 1)
                {
                    UpdatedData.ImportRow(dt.Rows[0]);
                }
            }
            return(UpdatedData);
        }
예제 #11
0
        public void LoadData(int scheduleDetailId, bool showId)
        {
            // clear UI

            Clear();

            var dataQuery = new ScheduleDetailDataModel();

            dataQuery.ScheduleDetailId = scheduleDetailId;

            var items = ScheduleDetailDataManager.GetEntityDetails(dataQuery, SessionVariables.RequestProfile);

            if (items.Count != 1)
            {
                return;
            }

            var item = items[0];

            ScheduleDetailId = item.ScheduleDetailId;
            ScheduleId       = item.ScheduleId;
            InTime           = item.InTime;
            OutTime          = item.OutTime;
            WorkTicket       = item.WorkTicket;
            Message          = item.Message;
            ScheduleDetailActivityCategoryId = item.ScheduleDetailActivityCategoryId;
            //CreatedByAuditId                 = item.CreatedByAuditId;
            //ModifiedByAuditId                = item.ModifiedByAuditId;
            //CreatedDate                      = item.CreatedDate;
            //ModifiedDate                     = item.ModifiedDate;

            if (!showId)
            {
                txtScheduleDetailId.Text = item.ScheduleDetailId.ToString();

                // only show Audit History in case of Update page, not for Clone.
                oHistoryList.Setup((int)SystemEntity.ScheduleDetail, scheduleDetailId, "ScheduleDetail");
            }
            else
            {
                txtScheduleDetailId.Text = String.Empty;
            }

            oUpdateInfo.LoadText(item.UpdatedDate, item.UpdatedBy, item.LastAction);
        }
예제 #12
0
        public List <WorkCategoryRecord> GetWorkCategoryReportData(string value1, string value2, string value3)
        {
            var applicationUserId = value1;
            var fromSearchDate    = value2;
            var toSearchDate      = value3;

            var dateFormat = "dd.MM.yyyy";

            var scheduleData = new ScheduleDetailDataModel();

            scheduleData.PersonId       = int.Parse(applicationUserId);
            scheduleData.FromSearchDate = DateTime.ParseExact(fromSearchDate, dateFormat, System.Globalization.DateTimeFormatInfo.InvariantInfo);
            scheduleData.ToSearchDate   = DateTime.ParseExact(toSearchDate, dateFormat, System.Globalization.DateTimeFormatInfo.InvariantInfo);

            var lstResult = ScheduleDetailDataManager.GetWorkCategoryData(scheduleData, SessionVariables.RequestProfile);

            return(lstResult);
        }
예제 #13
0
        protected void btnDelete_Click(object sender, EventArgs e)
        {
            try
            {
                string[] deleteIndexList = DeleteIds.Split(',');
                foreach (string index in deleteIndexList)
                {
                    var data = new ScheduleDetailDataModel();
                    data.ScheduleDetailId = int.Parse(index);
                    ScheduleDetailDataManager.Delete(data, SessionVariables.RequestProfile);
                }

                DeleteAndRedirect();
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }
        }
예제 #14
0
        protected void GetData(int scheduleId)
        {
            var data = new ScheduleDetailDataModel();

            data.ScheduleId = scheduleId;

            var dt = ScheduleDetailDataManager.Search(data, SessionVariables.RequestProfile);

            if (dt.Rows.Count > 0)
            {
                ViewState["CurrentTable"]    = dt;
                gvScheduleDetails.DataSource = dt;
                gvScheduleDetails.DataBind();

                SetGridViewFooter(dt);
            }
            else
            {
                //AddNewRow();
                dt.Rows.Add(dt.NewRow());

                var getMaxDetailId = GetData();
                dt.Rows[0]["ScheduleDetailId"] = getMaxDetailId + 1;

                dt.Rows[0]["ScheduleId"]  = scheduleId;
                dt.Rows[0]["InTime"]      = DateTime.Now;
                dt.Rows[0]["OutTime"]     = DateTime.Now;
                dt.Rows[0]["Message"]     = "";
                dt.Rows[0]["WorkTicket"]  = "N/A";
                dt.Rows[0]["CreatedDate"] = DateTime.Now;

                ViewState["CurrentTable"] = dt;

                gvScheduleDetails.DataSource = dt;
                gvScheduleDetails.DataBind();

                SetGridViewFooter(dt);
            }
        }
예제 #15
0
        //public int? CreatedByAuditId
        //{
        //    get
        //    {
        //        return int.Parse(txtCreatedByAuditId.Text);
        //    }
        //    set
        //    {
        //        txtCreatedByAuditId.Text = (value == null) ? String.Empty : value.ToString();
        //    }
        //}

        //public int? ModifiedByAuditId
        //{
        //    get
        //    {
        //        return int.Parse(txtModifiedByAuditId.Text);
        //    }
        //    set
        //    {
        //        txtModifiedByAuditId.Text = (value == null) ? String.Empty : value.ToString();
        //    }
        //}

        //public DateTime? CreatedDate
        //{
        //    get
        //    {
        //        return DateTime.ParseExact(txtCreatedDate.Text, SessionVariables.UserDateFormat, DateTimeFormatInfo.InvariantInfo);
        //        //return DateTime.Parse(txtCreatedDate.Text.Trim());
        //    }
        //    set
        //    {

        //        txtCreatedDate.Text = (value == null) ? String.Empty : value.Value.ToString(SessionVariables.UserDateFormat);
        //    }
        //    //get
        //    //{
        //    //	//DateTime dt = Convert.ToDateTime(txtCreatedDate.Text.Trim());
        //    //	//return DateTime.ParseExact(dt.ToString(this.DateTimeFormat), this.DateTimeFormat, System.Globalization.DateTimeFormatInfo.InvariantInfo);
        //    //	DateTime dt = Convert.ToDateTime(txtCreatedDate.Text.Trim());
        //    //	return DateTime.Parse(dt.ToString("t"), null);
        //    //}
        //    //set
        //    //{
        //    //	txtCreatedDate.Text = (value == null) ? String.Empty : value.Value.ToString("t");
        //    //}
        //}

        //public DateTime? ModifiedDate
        //{
        //    get
        //    {
        //        DateTime dt = Convert.ToDateTime(txtModifiedDate.Text.Trim());
        //        return DateTime.ParseExact(dt.ToString(SessionVariables.UserDateFormat), SessionVariables.UserDateFormat, DateTimeFormatInfo.InvariantInfo);
        //    }
        //    set
        //    {
        //        txtModifiedDate.Text = (value == null) ? String.Empty : value.Value.ToString(SessionVariables.UserDateFormat);
        //    }
        //}

        #endregion properties

        #region private method

        private int?InsertOrUpdate(ScheduleDetailDataModel data, string action)
        {
            if (action == "Insert")
            {
                var dtScheduleDetail = ScheduleDetailDataManager.DoesExist(data, SessionVariables.RequestProfile);

                if (dtScheduleDetail.Rows.Count == 0)
                {
                    ScheduleDetailId = ScheduleDetailDataManager.Create(data, SessionVariables.RequestProfile);
                }
                else
                {
                    throw new Exception("Record with given ID already exists.");
                }
            }
            else
            {
                //data.CreatedDate = CreatedDate;
                ScheduleDetailDataManager.Update(data, SessionVariables.RequestProfile);
            }
            return(ScheduleDetailId);
        }
예제 #16
0
        protected override DataTable GetData()
        {
            try
            {
                SuperKey = ApplicationCommon.GetSuperKey();
                SetId    = ApplicationCommon.GetSetId();

                var selectedrows       = new DataTable();
                var scheduleDetaildata = new ScheduleDetailDataModel();

                selectedrows = ScheduleDetailDataManager.GetDetails(scheduleDetaildata, SessionVariables.RequestProfile).Clone();
                if (!string.IsNullOrEmpty(SuperKey))
                {
                    var systemEntityTypeId = (int)PrimaryEntity;
                    var lstEntityKeys      = ApplicationCommon.GetSuperKeyDetails(systemEntityTypeId, SuperKey);

                    foreach (var entityKey in lstEntityKeys)
                    {
                        scheduleDetaildata.ScheduleDetailId = entityKey;
                        var result = ScheduleDetailDataManager.GetDetails(scheduleDetaildata, SessionVariables.RequestProfile);
                        selectedrows.ImportRow(result.Rows[0]);
                    }
                }
                else
                {
                    scheduleDetaildata.ScheduleDetailId = SetId;
                    var result = ScheduleDetailDataManager.GetDetails(scheduleDetaildata, SessionVariables.RequestProfile);
                    selectedrows.ImportRow(result.Rows[0]);
                }
                return(selectedrows);
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }

            return(null);
        }
예제 #17
0
        protected override void Update(Dictionary <string, string> values)
        {
            var data = new ScheduleDetailDataModel();

            if (values.ContainsKey(ScheduleDetailDataModel.DataColumns.ScheduleDetailId))
            {
                data.ScheduleDetailId = int.Parse(values[ScheduleDetailDataModel.DataColumns.ScheduleDetailId].ToString());
            }

            if (values.ContainsKey(ScheduleDetailDataModel.DataColumns.ScheduleId))
            {
                data.ScheduleId = int.Parse(values[ScheduleDetailDataModel.DataColumns.ScheduleId].ToString());
            }

            if (values.ContainsKey(ScheduleDetailDataModel.DataColumns.InTime))
            {
                data.InTime = DateTime.Parse(values[ScheduleDetailDataModel.DataColumns.InTime].ToString());
            }

            if (values.ContainsKey(ScheduleDetailDataModel.DataColumns.OutTime))
            {
                data.OutTime = DateTime.Parse(values[ScheduleDetailDataModel.DataColumns.OutTime].ToString());
            }

            if (values.ContainsKey(ScheduleDetailDataModel.DataColumns.CreatedDate))
            {
                data.CreatedDate = DateTime.Parse(values[ScheduleDetailDataModel.DataColumns.CreatedDate].ToString());
            }

            if (values.ContainsKey(ScheduleDetailDataModel.DataColumns.Message))
            {
                data.Message = values[ScheduleDetailDataModel.DataColumns.Message].ToString();
            }

            ScheduleDetailDataManager.Update(data, SessionVariables.RequestProfile);
            base.Update(values);
        }
예제 #18
0
        protected void lbtnSubmit_Click(object sender, EventArgs e)
        {
            try
            {
                var dt = GetDataOnly((int)ViewState["SetId"]);

                foreach (GridViewRow row in gvScheduleDetails.Rows)
                {
                    var lblScheduleDetailID = (Label)gvScheduleDetails.Rows[row.RowIndex].FindControl("lblScheduleDetailId");
                    var foundIds            = dt.Select("ScheduleDetailId = '" + lblScheduleDetailID.Text + "'");
                    var lblScheduleId       = (Label)gvScheduleDetails.Rows[row.RowIndex].FindControl("lblScheduleId");
                    var drpScheduleDetailActivityCategory = (DropDownList)gvScheduleDetails.Rows[row.RowIndex].FindControl("drpScheduleDetailActivityCategory");
                    var txtInsertInTime  = (TextBox)gvScheduleDetails.Rows[row.RowIndex].FindControl("txtInsertInTime");
                    var txtInsertOutTime = (TextBox)gvScheduleDetails.Rows[row.RowIndex].FindControl("txtInsertOutTime");
                    var txtWorkTicket    = (TextBox)gvScheduleDetails.Rows[row.RowIndex].FindControl("txtWorkTicket");
                    var txtInsertMsg     = (TextBox)gvScheduleDetails.Rows[row.RowIndex].FindControl("txtInsertMsg");
                    var lblCreatedDate   = (Label)gvScheduleDetails.Rows[row.RowIndex].FindControl("lblCreatedDate");

                    var data = new ScheduleDetailDataModel();

                    data.ScheduleDetailId = Convert.ToInt32(lblScheduleDetailID.Text);
                    data.ScheduleId       = Convert.ToInt32(lblScheduleId.Text);
                    data.ScheduleDetailActivityCategoryId = Convert.ToInt32(drpScheduleDetailActivityCategory.SelectedValue);
                    data.WorkTicket = txtWorkTicket.Text.Trim();
                    data.Message    = txtInsertMsg.Text;

                    var dtInTime = Convert.ToDateTime(txtInsertInTime.Text.Trim());
                    data.InTime = DateTime.Parse(dtInTime.ToString("t"), null);

                    var dtOutTime = Convert.ToDateTime(txtInsertOutTime.Text.Trim());
                    data.OutTime = DateTime.Parse(dtOutTime.ToString("t"), null);

                    // adding a day in case some one finishes a task next day.
                    if (data.OutTime.Value.Hour < 5 && data.InTime.Value.Hour > 5)
                    {
                        data.OutTime = data.OutTime.Value.AddDays(1);
                    }

                    if (foundIds.Length != 0)
                    {
                        data.CreatedDate = DateTime.Parse(lblCreatedDate.Text);

                        ScheduleDetailDataManager.Update(data, SessionVariables.RequestProfile);
                    }

                    else
                    {
                        var dataInsert = new ScheduleDetailDataModel();
                        dataInsert.ScheduleId = Convert.ToInt32(lblScheduleId.Text);

                        var dataSearch = ScheduleDetailDataManager.GetDetails(dataInsert, SessionVariables.RequestProfile);
                        if (dataSearch.Rows.Count == 0)
                        {
                            ScheduleDetailDataManager.Create(data, SessionVariables.RequestProfile);
                        }
                        else
                        {
                            for (var i = 0; i < dataSearch.Rows.Count; i++)
                            {
                                if (data.InTime.Equals(dataSearch.Rows[i][ScheduleDetailDataModel.DataColumns.InTime]))
                                {
                                    Session["msg"] = "INTIME should be UNIQUE for Single ScheduleId";
                                    Response.Redirect(Page.GetRouteUrl("ScheduleEntityRoute", new { Action = "Update", SetId = data.ScheduleId.ToString() }), false);
                                    throw new Exception("INTIME should be UNIQUE for Single ScheduleId");
                                }
                                else
                                {
                                    ScheduleDetailDataManager.Create(data, SessionVariables.RequestProfile);
                                    break;
                                }
                            }
                        }
                    }
                }

                var ScheduleDetailIDList = (List <int>)ViewState["DeletedIds"];

                foreach (var ScheduleDetailID in ScheduleDetailIDList)
                {
                    var data = new ScheduleDetailDataModel();

                    data.ScheduleDetailId = ScheduleDetailID;
                    ScheduleDetailDataManager.Delete(data, SessionVariables.RequestProfile);
                }

                GetData((int)ViewState["SetId"]);
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }
        }
예제 #19
0
        protected DataTable GetData()
        {
            var ds = ScheduleDetailDataManager.SearchView(oSearchFilter.SearchParameters, SessionVariables.RequestProfile);

            AllDataRows = ds.Tables[1];
            DataTable dt = null;

            // refresh total time spent variable everytime new data is retrieved.
            TotalTimeSpentCount = GetTotalTimeSpentCount();

            if (string.IsNullOrEmpty(oSearchFilter.GroupBy) || oSearchFilter.GroupBy == "-1" || oSearchFilter.GroupBy == "All")
            {
                if (ds.Tables.Count > 1)
                {
                    var tblKeyDescription = new DataTable();

                    tblKeyDescription.AcceptChanges();
                    tblKeyDescription.Columns.Add("Person");
                    tblKeyDescription.Columns.Add("PersonId");

                    var row = tblKeyDescription.NewRow();
                    row["Person"]   = "All";
                    row["PersonId"] = "All";
                    tblKeyDescription.Rows.Add(row);

                    var dataView = tblKeyDescription.DefaultView;

                    dt = dataView.ToTable();
                    GrdParentGrid.DataSource = dt;
                    GrdParentGrid.DataBind();

                    TotalParentCount = dt.Rows.Count;
                }
            }
            else if (ds.Tables.Count > 1 && !String.IsNullOrEmpty(oSearchFilter.GroupBy.Trim()) && oSearchFilter.GroupBy != "-1" && oSearchFilter.GroupBy != "All")
            {
                // adding statistic header row only if only Grouping is applied.
                if (String.IsNullOrEmpty(oSearchFilter.SubGroupBy) || oSearchFilter.SubGroupBy == "-1" || oSearchFilter.SubGroupBy == "All")
                {
                    TableReportContent.Controls.Add(GetStatisticInfoHTMLHeaderRow(oSearchFilter.GroupBy));
                }
                // All related fings (children)

                var AllDataRows_Schedule = ds.Tables[0];

                var tblKeyDescription = new DataTable();
                tblKeyDescription.Columns.Add("Grouping");
                tblKeyDescription.Columns.Add("Key");

                // temp
                tblKeyDescription.Columns.Add("PersonId");
                tblKeyDescription.Columns.Add("Person");


                tblKeyDescription.AcceptChanges();

                AllDataRows_Schedule.Merge(AllDataRows);
                var distinctFieldValues = (from row in AllDataRows_Schedule.AsEnumerable()
                                           .Where(row => row[oSearchFilter.GroupBy].ToString().Trim() != "")
                                           orderby row[oSearchFilter.GroupBy].ToString().Trim() descending
                                           select row[oSearchFilter.GroupBy].ToString().Trim())
                                          .Distinct(StringComparer.CurrentCultureIgnoreCase);

                //var distinctFieldValues = (from row in AllDataRows.AsEnumerable()
                //						   orderby row["PersonId"].ToString().Trim()
                //						   select row["PersonId"].ToString().Trim()).Distinct(StringComparer.CurrentCultureIgnoreCase);

                foreach (var key in distinctFieldValues)
                {
                    var row = tblKeyDescription.NewRow();
                    row["Grouping"] = oSearchFilter.GroupBy;
                    row["Key"]      = key;

                    // temp
                    //row["PersonId"] = key;
                    //row["Person"] = key;

                    EnumerableRowCollection <object> schedulePKId = null;

                    //if (AllDataRows_Schedule.Columns.Contains("IsUpdated"))
                    //{
                    //	schedulePKId = AllDataRows_Schedule.AsEnumerable()
                    //						.Where(x => x[ScheduleDataModel.DataColumns.Person].ToString().ToLower() == key &&
                    //						 x[ScheduleDataModel.DataColumns.IsUpdated].ToString() == "1")
                    //						.Select(x => x[ScheduleDataModel.DataColumns.PersonId]);
                    //}
                    //else
                    //{

                    schedulePKId = AllDataRows_Schedule.AsEnumerable()
                                   .Where(x => x[ScheduleDetailDataModel.DataColumns.Person].ToString().ToLower() == key)
                                   .Select(x => x[ScheduleDetailDataModel.DataColumns.PersonId]);
                    //}

                    //if (oSearchFilter.GroupBy == ScheduleDataModel.DataColumns.Person)
                    //{
                    if (schedulePKId.Count() != 0)
                    {
                        var rowItem = from rowPK in AllDataRows_Schedule.AsEnumerable() select rowPK;
                        row["PersonId"] = rowItem.First();
                        row["Person"]   = key;
                        tblKeyDescription.Rows.Add(row);
                    }
                    //}
                    else
                    {
                        row["Person"] = key;
                        tblKeyDescription.Rows.Add(row);
                    }
                    //row["ReleaseLogId"] = key;

                    //row["Person"] = key;

                    //tblKeyDescription.Rows.Add(row);
                }

                tblKeyDescription.AcceptChanges();

                var dataView = tblKeyDescription.DefaultView;                // ds.Tables[0].DefaultView;
                //dataView.Sort = ScheduleDataModel.DataColumns.PersonId + " DESC";

                dt = dataView.ToTable();

                TotalParentCount = dt.Rows.Count;

                GrdParentGrid.DataSource = dt;
                GrdParentGrid.DataBind();
            }

            //TotalParentCount = dt.Rows.Count;

            //if ((ds.Tables[1].Rows.Count == 0 && ds.Tables[0].Rows.Count < 1) || (ds.Tables[1].Rows.Count == 0 && ds.Tables[0].Rows.Count > 1))
            if (ds.Tables[0].Rows.Count == 0)
            {
                lblSearchStatus.Text = "No records found for the given Search parameters.";
                //StatsDiv.Visible = false;
            }
            else
            {
                lblSearchStatus.Text = String.Empty;
                //StatsDiv.Visible = true;
            }

            return(ds.Tables[0]);
        }
예제 #20
0
        public HtmlGenericControl GetStatisticInfoHTMLSummaryRow(DataTable scheduleDetailData, string groupName)
        {
            var lstValues = ScheduleDetailDataManager.GetStatisticDataSummary(scheduleDetailData, ScheduleDetailDataModel.DataColumns.ScheduleDetailTimeSpentConstant, ApplicationCommon.ScheduleStatisticUnknown);
            var average   = Math.Round(lstValues["Average"], 2);
            var median    = lstValues["Median"];

            var     recCount = scheduleDetailData.Rows.Count;
            decimal total    = 0;

            decimal maxValue = 0;
            decimal minValue = 0;

            // if no records, no need to count total, search for max, min
            if (recCount > 0)
            {
                var series = new decimal[recCount];
                var i      = 0;

                foreach (var itemSchedule in scheduleDetailData.AsEnumerable())
                {
                    var totalHoursWorked = itemSchedule[ScheduleDetailDataModel.DataColumns.DateDiffHrs].ToString();

                    var totalHoursWorkedValue = 0m;

                    if (!Decimal.TryParse(totalHoursWorked, out totalHoursWorkedValue))
                    {
                        totalHoursWorkedValue = ScheduleDetailDataModel.DataColumns.ScheduleDetailTimeSpentConstant;
                    }

                    series[i++] = totalHoursWorkedValue;
                }

                total = series.Sum(x => x);

                maxValue = series.Select(x => x).Distinct().Max();
                minValue = series.Select(x => x).Distinct().Min();
            }


            var subDiv1 = new HtmlGenericControl("div");

            subDiv1.Attributes["class"] = "row gutter-border text-right summary-bgcolor";

            var divId1 = new HtmlGenericControl("div");

            divId1.Attributes["class"] = "col-sm-2";

            var lblScheduleText1 = new Label();

            lblScheduleText1.Text = "Summary";
            divId1.Controls.Add(lblScheduleText1);
            subDiv1.Controls.Add(divId1);

            var divTotal1 = new HtmlGenericControl("div");

            divTotal1.Attributes["class"] = "col-sm-1";

            var lblTotalText1 = new Label();

            lblTotalText1.Text = total.ToString("#0,0.00");
            divTotal1.Controls.Add(lblTotalText1);
            subDiv1.Controls.Add(divTotal1);

            var divTotalPer = new HtmlGenericControl("div");

            divTotalPer.Attributes["class"] = "col-sm-2";

            var lblTotalPerText = new Label();

            lblTotalPerText.Text = "100%";
            divTotalPer.Controls.Add(lblTotalPerText);
            subDiv1.Controls.Add(divTotalPer);

            var divAverage1 = new HtmlGenericControl("div");

            divAverage1.Attributes["class"] = "col-sm-1";

            var lblAverageText1 = new Label();

            lblAverageText1.Text = average.ToString("#0,0.00");
            divAverage1.Controls.Add(lblAverageText1);
            subDiv1.Controls.Add(divAverage1);

            var divMedianSummary = new HtmlGenericControl("div");

            divMedianSummary.Attributes["class"] = "col-sm-1";

            var lblMedianText1 = new Label();

            lblMedianText1.Text = median.ToString("#0,0.00");
            divMedianSummary.Controls.Add(lblMedianText1);
            subDiv1.Controls.Add(divMedianSummary);

            var divCountSummary = new HtmlGenericControl("div");

            divCountSummary.Attributes["class"] = "col-sm-1";

            var lblCountText1 = new Label();

            lblCountText1.Text = recCount.ToString("#0,0.00");
            divCountSummary.Controls.Add(lblCountText1);
            subDiv1.Controls.Add(divCountSummary);

            var divCntPer = new HtmlGenericControl("div");

            divCntPer.Attributes["class"] = "col-sm-2";

            var lblCntPerText = new Label();

            lblCntPerText.Text = "100%";
            divCntPer.Controls.Add(lblCntPerText);
            subDiv1.Controls.Add(divCntPer);

            var divMaxSummary = new HtmlGenericControl("div");

            divMaxSummary.Attributes["class"] = "col-sm-1";

            var lblMaxText1 = new Label();

            lblMaxText1.Text = maxValue.ToString("#0,0.00");
            divMaxSummary.Controls.Add(lblMaxText1);
            subDiv1.Controls.Add(divMaxSummary);

            var divMinSummary = new HtmlGenericControl("div");

            divMinSummary.Attributes["class"] = "col-sm-1";

            var lblMinText1 = new Label();

            lblMinText1.Text = minValue.ToString("#0,0.00");
            divMinSummary.Controls.Add(lblMinText1);

            subDiv1.Controls.Add(divMinSummary);
            return(subDiv1);
        }
예제 #21
0
        protected void GrdParentGrid_RowDataBound(object sender, RepeaterItemEventArgs e)
        {
            var drv = e.Item.DataItem as DataRowView;

            if (drv == null)
            {
                return;
            }

            var hdnField    = e.Item.FindControl("hdnScheduleDetailId") as HiddenField;
            var btnInsert   = e.Item.FindControl("btnInsert") as LinkButton;
            var btnCheckBox = e.Item.FindControl("chkbox") as LinkButton;

            //tab control or detail Grid Container DIV
            var detailsGridContainer = e.Item.FindControl("detailsGridContainer") as HtmlGenericControl;

            if (oSearchFilter.GroupBy == "Person")
            {
                //var btnInsert = e.Item.FindControl("btnInsert") as LinkButton;
                btnInsert.PostBackUrl  = Page.GetRouteUrl("ScheduleDetailEntityRoute", new { Action = "Insert" });
                btnInsert.PostBackUrl += "/" + hdnField.Value;
            }

            var parentKey     = string.Empty;
            var parentKeyName = parentKey = DataBinder.Eval(e.Item.DataItem, "Person").ToString();

            //ReleaseLog = (DataBinder.Eval(e.Item.DataItem, "Name")).ToString();
            //ReleaseLog = parentKey;

            if (oSearchFilter.GroupBy == "-1" || string.IsNullOrEmpty(oSearchFilter.GroupBy) || oSearchFilter.GroupBy == "All")
            {
                parentKey         = hdnField.Value;
                btnInsert.Visible = false;
                //btnCheckBox.Visible = false;
            }
            else
            {
                parentKey = DataBinder.Eval(e.Item.DataItem, "Key").ToString();
            }

            //data set for the current group
            var filteredGroup = GetDataDetailsByKey(parentKey);

            var statisticItem = ScheduleDetailDataManager.GetStatisticData(filteredGroup, ScheduleDetailDataModel.DataColumns.ScheduleDetailTimeSpentConstant, ApplicationCommon.ScheduleStatisticUnknown);

            AddSummaryStatisticLine(parentKey, statisticItem);

            if (!String.IsNullOrEmpty(oSearchFilter.GroupBy.Trim()) &&
                oSearchFilter.GroupBy != "-1" &&
                oSearchFilter.GroupBy != "All" &&
                !String.IsNullOrEmpty(oSearchFilter.SubGroupBy) &&
                oSearchFilter.SubGroupBy != "-1" &&
                oSearchFilter.SubGroupBy != "All")
            //&&	filteredGroup.Columns.Contains(oSearchFilter.SubGroupBy)
            {
                // get new instance of tab control to added for the group
                var tabControl = ApplicationCommon.GetNewDetailTabControl();
                tabControl.Setup(SettingCategory);

                var subGroupByColumn = oSearchFilter.SubGroupBy;

                // Add Group By Key Information
                var grpByDiv = new HtmlGenericControl("div");
                grpByDiv.InnerHtml = "<strong>Group: " + parentKey + " </strong>";
                TableReportContent.Controls.Add(grpByDiv);

                // Add Header Row for Statistics table
                TableReportContent.Controls.Add(GetStatisticInfoHTMLHeaderRow(subGroupByColumn));

                // get distinct sub group by values
                var distinctFieldValues = (from row in filteredGroup.AsEnumerable()
                                           .Where(row => row[subGroupByColumn].ToString().Trim() != "")
                                           orderby row[subGroupByColumn].ToString().Trim() descending
                                           select row[subGroupByColumn].ToString().Trim())
                                          .Distinct(StringComparer.CurrentCultureIgnoreCase);

                var series = new decimal[filteredGroup.Rows.Count];
                var i      = 0;

                foreach (DataRow item in filteredGroup.Rows)
                {
                    var timeSpent = item[ScheduleDetailDataModel.DataColumns.DateDiffHrs].ToString();

                    var timeSpentValue = 0m;

                    Decimal.TryParse(timeSpent, out timeSpentValue);

                    series[i++] = timeSpentValue;
                }

                var totalHoursWorkedForGroup = series.Sum();


                var mainDiv = new HtmlGenericControl("table");
                mainDiv.Attributes["class"] = "table table-bordered";

                // create tab for each sub group by distinct value
                foreach (var key in distinctFieldValues)
                {
                    var detailContainer = new HtmlGenericControl("div");
                    //detailContainer.Style.Add("Width", "100%");

                    // Add DetailsWithChildrenControl
                    var ctlDetailsWithChildren = Page.LoadControl(ApplicationCommon.DetailsWithChildrenListControl) as DetailsWithChildrenControl;

                    ctlDetailsWithChildren.FieldConfigurationMode = ddlFieldConfigurationMode.SelectedValue;
                    ctlDetailsWithChildren.SettingCategory        = SettingCategory + "DetailsWithChildrenControl";
                    ctlDetailsWithChildren.IsFCModeVisible        = false;
                    ctlDetailsWithChildren.Setup("ScheduleDetail", "ScheduleDetail", "ScheduleDetailId", parentKey, subGroupByColumn, key, true, GetSubGroupData, GetColumns, "ScheduleDetail", DetailUserPreferenceCategoryId);
                    ctlDetailsWithChildren.SetVisibilityOfListFeatures(false, false, false);
                    ctlDetailsWithChildren.SetSession("true");
                    //ctlDetailsWithChildren.Attributes.Add("width", "100%");

                    //var filteredGroup = GetDataDetailsByKey(parentKey);
                    var subGroupData = GetSubGroupData(parentKey, key);
                    var item         = ScheduleDetailDataManager.GetStatisticData(subGroupData, ScheduleDetailDataModel.DataColumns.ScheduleDetailTimeSpentConstant, ApplicationCommon.ScheduleStatisticUnknown);

                    var statisticControl = Page.LoadControl(ApplicationCommon.ScheduleDetailStatisticControlPath) as ScheduleDetailStatistics;
                    statisticControl.SetStatistics(parentKey, item);

                    detailContainer.Controls.Add(ctlDetailsWithChildren);
                    detailContainer.Controls.Add(statisticControl);

                    // add row for each sub grouping for statistic info tab
                    var subDiv = GetStatisticInfoHTMLRow(item, key, totalHoursWorkedForGroup, filteredGroup.Rows.Count);
                    mainDiv.Controls.Add(subDiv);

                    // add to tab control
                    tabControl.AddTab(key, detailContainer);

                    if (Page.IsPostBack)
                    {
                        ctlDetailsWithChildren.ShowData(false, true);
                    }
                }

                TableReportContent.Controls.Add(mainDiv);

                // add summary row for sub grouping for statistics info tab
                var ctrlStatSummary = GetStatisticInfoHTMLSummaryRow(filteredGroup, oSearchFilter.SubGroupBy);
                TableReportContent.Controls.Add(ctrlStatSummary);

                var seperator = new HtmlGenericControl("div");
                seperator.InnerHtml = "<br/>";
                TableReportContent.Controls.Add(seperator);

                if (detailsGridContainer != null)
                {
                    detailsGridContainer.Controls.Add(tabControl);
                }
            }
            else             // only Group By Case
            {
                // Add DetailsWithChildrenControl
                var ctlDetailsWithChildren = Page.LoadControl(ApplicationCommon.DetailsWithChildrenListControl) as DetailsWithChildrenControl;

                ctlDetailsWithChildren.ID = "oList";
                ctlDetailsWithChildren.SettingCategory = SettingCategory + "DetailsWithChildrenListControl";
                ctlDetailsWithChildren.IsFCModeVisible = false;
                ctlDetailsWithChildren.Setup("ScheduleDetail", "ScheduleDetail", "ScheduleDetailId", parentKey, true, GetDataDetailsByKey, GetColumns, "ScheduleDetail", DetailUserPreferenceCategoryId);
                ctlDetailsWithChildren.SetVisibilityOfListFeatures(false, false, false);
                ctlDetailsWithChildren.SetSession("true");
                ctlDetailsWithChildren.FieldConfigurationMode = ddlFieldConfigurationMode.SelectedValue;

                if (detailsGridContainer != null)
                {
                    detailsGridContainer.Controls.Add(ctlDetailsWithChildren);
                }

                if (Page.IsPostBack)
                {
                    ctlDetailsWithChildren.ShowData(false, true);
                }

                var statisticControlGroup = Page.LoadControl(ApplicationCommon.ScheduleDetailStatisticControlPath) as ScheduleDetailStatistics;
                statisticControlGroup.SetStatistics(parentKey, statisticItem);

                if (detailsGridContainer != null)
                {
                    detailsGridContainer.Controls.Add(statisticControlGroup);
                }

                HtmlGenericControl ctrlStat = null;
                if (oSearchFilter.GroupBy == "-1")
                {
                    ctrlStat = GetStatisticInfoHTMLRow(statisticItem, parentKeyName, TotalTimeSpentCount, AllDataRows.Rows.Count);
                }
                else
                {
                    ctrlStat = GetStatisticInfoHTMLRow(statisticItem, parentKey, TotalTimeSpentCount, AllDataRows.Rows.Count);
                }

                //var ctrlStat = oSG.GetStatisticDataGrid(statisticItems, parentKey);
                TableReportContent.Controls.Add(ctrlStat);

                // check if all rows created, if yes then add, summary row in the end.
                if (TotalParentCount == GrdParentGrid.Items.Count + 1)
                {
                    var ctrlStatSummary = GetStatisticInfoHTMLSummaryRow(AllDataRows, oSearchFilter.GroupBy);
                    TableReportContent.Controls.Add(ctrlStatSummary);
                }
            }

            if (oSearchFilter.GroupBy == "-1")
            {
                oSC.Setup(parentKeyName, statisticItem);
            }
            else
            {
                oSC.Setup(parentKey, statisticItem);
            }
        }
예제 #22
0
        public void FormatMail(DataTable dt1, string mailFormat, string toEmailAddress, string ccEmailAddress, string fromEmailAddress,
                               bool isPreview, RequestProfile requestProfile)
        {
            var mailTemplate = mailFormat;

            decimal totalhrs = 0;

            var stringBuilder = new StringBuilder();
            var strSubject    = new StringBuilder();

            var scheduleDetailData = (from m in dt1.AsEnumerable()
                                      select new
            {
                InTime = m["InTime"],
                OutTime = m["OutTime"],
                Message = m["Message"].ToString(),
                ScheduleDetailActivityCategory = m["ScheduleDetailActivityCategory"].ToString(),
                ScheduleDetailActivityCategoryId = m["ScheduleDetailActivityCategoryId"],
                WorkDate = m["WorkDate"],
                DateDiffHrs = m["DateDiffHrs"],
                Person = m["Person"],
                PersonId = m["PersonId"],
                EmailAddress = m["EmailAddress"],
                ScheduleId = m["ScheduleId"],
                WorkTicket = m["WorkTicket"]
            }).OrderBy(m => m.InTime).ToList();


            var workDate_distinct = (from c in dt1.AsEnumerable()
                                     select new
            {
                WorkDate = c["WorkDate"].ToString(),
                Person = c["Person"],
                ScheduleId = c["ScheduleId"]
            }).Distinct();

            if (!string.IsNullOrEmpty(mailTemplate))
            {
                foreach (var c in workDate_distinct)
                {
                    mailTemplate = mailTemplate.Replace("##PersonName##", c.Person.ToString());
                    mailTemplate = mailTemplate.Replace("##WorkDate##", Convert.ToDateTime(c.WorkDate).ToString("MMMM dd, yyyy"));
                }

                foreach (var item in scheduleDetailData)
                {
                    if (item.DateDiffHrs != null)
                    {
                        totalhrs = totalhrs + Convert.ToDecimal(item.DateDiffHrs);
                    }
                }
                mailTemplate = mailTemplate.Replace("##StartTime##", Convert.ToDateTime(scheduleDetailData.Select(grp => grp.InTime).First()).ToShortTimeString());
                mailTemplate = mailTemplate.Replace("##EndTime##", Convert.ToDateTime(scheduleDetailData.Select(grp => grp.OutTime).Last()).ToShortTimeString());
                mailTemplate = mailTemplate.Replace("##TotalHrs##", totalhrs.ToString("0.00"));

                var bColor = "#d9edf7";
                var i      = 0;

                foreach (var item in scheduleDetailData)
                {
                    var jiraIssue       = JiraDataManager.GetDetails(item.WorkTicket.ToString());
                    var jiraDescription = "N/A";
                    var jiraPriority    = "N/A";
                    var jiraWorkHours   = GetJiraWorkHours(item.WorkTicket.ToString(), Convert.ToDateTime(item.WorkDate), Convert.ToInt32(item.PersonId));
                    personId = Convert.ToInt32(item.PersonId);
                    var minsDuration = ScheduleDataManager.GetMinutes(Convert.ToDouble(item.DateDiffHrs));
                    var jiraURL      = "http://*****:*****@indusvalleyresearch.com";
                }

                var nMail = new MailMessage(fromEmailAddress, strToEmail);
                //string strFromEmail = "*****@*****.**";
                if (ccEmailAddress != string.Empty)
                {
                    MailAddress copy = new MailAddress(ccEmailAddress);
                    nMail.CC.Add(copy);
                }

                foreach (var item in scheduleDetailData)
                {
                    string bccMail = item.EmailAddress.ToString();
                    if (bccMail != string.Empty)
                    {
                        nMail.Bcc.Add(new MailAddress(bccMail));
                    }
                }

                foreach (var c in workDate_distinct)
                {
                    strSubject.Append("EOD Daily Summary Email for " + Convert.ToDateTime(c.WorkDate).ToString("MMMM dd, yyyy") + "(" + totalhrs.ToString("0.00") + " hrs" + ")");
                    strSubject.Append(" - Sent on behalf of " + c.Person);
                }

                nMail.Subject    = strSubject.ToString();
                nMail.Body       = mailTemplate;
                nMail.IsBodyHtml = true;

                var a = new SmtpClient();
                a.Send(nMail);
            }
        }