Exemplo n.º 1
0
        private void AddReportToolItem(ToolsMenuItem toolItem, Point location)
        {
            UIElement toolObject = Activator.CreateInstance(toolItem.ToolType) as UIElement;

            if (toolItem.ToolType == typeof(ReportDataObject) && this.SectionType == SectionTypeEnum.TableData)
            {
                ReportColumnModel column = toolItem.Tag.To <ReportColumnModel>();

                column.DropX = location.X;

                column.DropY = location.Y;

                if (!this.MayAddColumn(column))
                {
                    return;
                }

                toolObject.SetPropertyValue("ColumnModel", column);
            }

            toolObject.SetPropertyValue("Top", location.Y);

            toolObject.SetPropertyValue("Left", location.X);

            this.SetEditControl(toolObject, false);
        }
Exemplo n.º 2
0
        // GET: Business/ReportColumns/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ReportColumn reportColumn = db.ReportColumns.Find(id);

            if (reportColumn == null)
            {
                return(HttpNotFound());
            }
            var model = new ReportColumnModel
            {
                Id                   = reportColumn.Id,
                ServiceId            = reportColumn.ServiceId,
                ColumnName           = reportColumn.ColumnName,
                IsMandatory          = reportColumn.IsMandatory,
                DisplayInFilter      = reportColumn.DisplayInFilter,
                RolePrivileges       = db.SalesRolePrivileges.Where(t => t.ColumnId == id).Select(t => t.Role.Id).ToArray(),
                DepartmentPrivileges = db.SalesDepartmentPrivileges.Where(t => t.ColumnId == id).Select(t => t.Department.Id).ToArray(),
                UserPrivileges       = db.SalesUserPrivileges.Where(t => t.ColumnId == id).Select(t => t.User.Id).ToArray(),
                ShowInGrid           = reportColumn.ShowInGrid
            };

            ViewBag.RolePrivilegesList       = new SelectList(db.Roles.Where(a => a.BusinessId == CurrentBusinessId), "Id", "Name");
            ViewBag.DepartmentPrivilegesList = new SelectList(db.Departments.Where(a => a.BusinessId == CurrentBusinessId), "Id", "DepartmentName");
            ViewBag.UserPrivilegesList       = new SelectList(db.Users.Where(a => a.BusinessId == CurrentUser.BusinessId && a.IsActive == true && !a.Roles.Select(y => y.Name).Contains("BusinessAdmin") && !a.Roles.Select(y => y.Name).Contains("SuperAdmin") && !a.Roles.Select(y => y.Name).Contains("MasterAdmin")), "Id", "FirstName");
            ViewBag.ServiceId = new SelectList(db.LookupEnrolledServices.Where(a => a.BusinessId == CurrentBusinessId), "Id", "ServiceName", reportColumn.ServiceId);
            ViewBag.CreatedBy = new SelectList(db.Users, "Id", "FirstName", reportColumn.CreatedBy);
            ViewBag.UpdatedBy = new SelectList(db.Users, "Id", "FirstName", reportColumn.UpdatedBy);
            return(View(model));
        }
Exemplo n.º 3
0
        public ActionResult SaveReportColumn(ReportColumnModel model)
        {
            if (ModelState.IsValid)
            {
                var reportColumn = _reportColumnRepository.GetById(model.Id);
                //always set IsNew to false when saving
                reportColumn.IsNew = false;
                reportColumn       = model.ToEntity(reportColumn);

                _reportColumnRepository.UpdateAndCommit(reportColumn);
                return(new NullJsonResult());
            }
            else
            {
                return(Json(new { Errors = ModelState.Errors().ToHtmlString() }));
            }
        }
Exemplo n.º 4
0
        private bool MayAddColumn(ReportColumnModel column)
        {
            if (!this.SectionTableName.IsNullEmptyOrWhiteSpace() && column.TableName != this.SectionTableName)
            {
                this.RequestNewDataSections?.Invoke(this, column);

                return(false);
            }

            this.SectionTableName = column.TableName;

            this.SqlManager.AddColumn(column);

            this.ReportColumnAdded?.Invoke(this, column);

            return(true);
        }
Exemplo n.º 5
0
        internal void AddColumn(ReportColumnModel column)
        {
            if (!this.TableName.IsNullEmptyOrWhiteSpace() && this.TableName != column.TableName)
            {
                throw new ApplicationException($"Table Column Mismatch. Column {column.ColumnName} does not belong to table {this.TableName}.");
            }
            else if (this.TableName.IsNullEmptyOrWhiteSpace())
            {
                this.TableName = column.TableName;
            }

            this.AddColumnCount(column.ColumnName);

            if (!this.columnsDictionary.ContainsKey(column.ColumnName))
            {
                this.columnsDictionary.Add(column.ColumnName, column);
            }
        }
Exemplo n.º 6
0
        public void AddReportColumn(ReportColumnModel column)
        {
            UIElement toolObject = Activator.CreateInstance(typeof(ReportDataObject)) as UIElement;

            toolObject.SetPropertyValue("Top", column.DropY);

            toolObject.SetPropertyValue("Left", column.DropX);

            toolObject.SetPropertyValue("ColumnModel", column);

            this.SetEditControl(toolObject, false);

            if (this.SectionTableName.IsNullEmptyOrWhiteSpace())
            {
                this.SectionTableName = column.TableName;
            }

            this.SqlManager.AddColumn(column);
        }
Exemplo n.º 7
0
        public ActionResult CreateReportColumn(long reportId)
        {
            var report          = _reportRepository.GetById(reportId);
            var maxDisplayOrder = report.ReportColumns.Max(p => p.DisplayOrder) ?? 0;
            var reportColumn    = new ReportColumn
            {
                ReportId     = reportId,
                IsNew        = true,
                DisplayOrder = maxDisplayOrder + 1
            };

            _reportColumnRepository.InsertAndCommit(reportColumn);

            var model = new ReportColumnModel();

            model = reportColumn.ToModel();
            var html = this.ReportColumnPanel(model);

            return(Json(new { Id = reportColumn.Id, Html = html }));
        }
Exemplo n.º 8
0
        public string BuildSelectQuery(
            ReportColumnModel[] columns,
            List <WhereParameterModel> whereParameterModel,
            List <ReportXMLPrintParameterModel> reportFilters,
            Dictionary <string, ReportSQLReplaceHeaderModel> replacementColumns,
            string orderByString)
        {
            if (!columns.HasElements())
            {
                return(string.Empty);
            }

            StringBuilder result = new StringBuilder();

            result.Append("SELECT ");

            for (int x = 0; x < columns.Length; ++x)
            {
                ReportColumnModel column = columns[x];

                if (x == columns.Length - 1)
                {
                    result.AppendLine($"             [{columns[0].TableName}].[{column.ColumnName}] ");
                }
                else if (x == 0)
                {
                    result.AppendLine($"[{columns[0].TableName}].[{column.ColumnName}], ");
                }
                else
                {
                    result.AppendLine($"             [{columns[0].TableName}].[{column.ColumnName}], ");
                }
            }

            // Add replacement SQL here
            foreach (KeyValuePair <string, ReportSQLReplaceHeaderModel> replacekey in replacementColumns)
            {
                result.Replace(replacekey.Key, this.BuildReplacementSQL(replacekey));
            }

            result.AppendLine($" FROM [{columns[0].TableName}] WITH(NOLOCK) ");

            bool haveWhereClause = false;

            if (whereParameterModel.Count > 0)
            {
                result.Append("WHERE ");

                haveWhereClause = true;
            }

            foreach (WhereParameterModel parameter in  whereParameterModel.OrderBy(so => so.OperatorIndex))
            {
                result.AppendLine($"{parameter.ColumnName} = @{parameter.ParameterName} {(parameter.AndOrOperator == SqlWhereOperatorsEnum.None ? string.Empty : parameter.AndOrOperator.ParseToString())} ");
            }

            List <ReportXMLPrintParameterModel> validFilters = reportFilters
                                                               .Where(rf => !rf.FilterValue.IsNullEmptyOrWhiteSpace())
                                                               .ToList();

            if (reportFilters.Count > 0 &&
                !haveWhereClause &&
                validFilters.Count > 0)
            {
                result.Append(" WHERE ");
            }
            else if (haveWhereClause && validFilters.Count > 0)
            {
                result.Append(" AND ");
            }

            for (int x = 0; x < validFilters.Count; ++x)
            {
                ReportXMLPrintParameterModel filter = validFilters[x];

                if (filter.FilterValue.IsNullEmptyOrWhiteSpace())
                {
                    continue;
                }

                result.AppendLine($"{filter.TableName}.{filter.ColumnName} = '{filter.FilterValue}'");

                if (x < validFilters.Count - 1)
                {
                    result.Append(" AND ");
                }
            }

            if (!orderByString.IsNullEmptyOrWhiteSpace())
            {
                result.Append($" ORDER BY {orderByString} ASC");
            }

            return(result.ToString());
        }
Exemplo n.º 9
0
        public string ReportColumnPanel(ReportColumnModel model)
        {
            var html = this.RenderPartialViewToString("_ReportColumnDetails", model);

            return(html);
        }
Exemplo n.º 10
0
        /// <summary>
        /// Insert or Update
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void InsertOrUpdate(object sender, DirectEventArgs e)
        {
            try
            {
                // init entity
                var model = new ReportColumnModel();
                ReportColumnModel resultModel;

                // check id
                if (!string.IsNullOrEmpty(hdfId.Text) && Convert.ToInt32(hdfId.Text) > 0)
                {
                    var result = ReportColumnController.GetById(Convert.ToInt32(hdfId.Text));
                    if (result != null)
                    {
                        model = result;
                    }
                }

                // set new props for entity
                model.ReportId  = Convert.ToInt32(hdfReportId.Text);
                model.Name      = txtName.Text;
                model.FieldName = hdfFieldName.Text;
                model.TextAlign = (ReportTextAlign)Convert.ToInt32(hdfTextAlign.Text);
                model.FontSize  = !string.IsNullOrEmpty(txtFontSize.Text)
                    ? Convert.ToInt32(txtFontSize.Text) : ReportHelper.DefaultFontSize;
                model.Format   = txtFormat.Text;
                model.ParentId = !string.IsNullOrEmpty(hdfParentId.Text)
                    ? Convert.ToInt32(hdfParentId.Text) : 0;
                model.Width = !string.IsNullOrEmpty(txtWidth.Text)
                    ? Convert.ToInt32(txtWidth.Text) : ReportHelper.DefaultCellHeight;
                model.Height = !string.IsNullOrEmpty(txtHeight.Text)
                    ? Convert.ToInt32(txtHeight.Text) : 0;
                model.Order = !string.IsNullOrEmpty(txtOrder.Text)
                    ? Convert.ToInt32(txtOrder.Text) : 0;
                model.IsGroup         = Convert.ToBoolean(hdfIsGroup.Text);
                model.DataType        = (ReportColumnDataType)Convert.ToInt32(hdfDataType.Text);
                model.Status          = (ReportColumnStatus)Convert.ToInt32(hdfStatus.Text);
                model.Type            = (ReportColumnType)Convert.ToInt32(hdfType.Text);
                model.SummaryRunning  = (ReportSummaryRunning)Convert.ToInt32(hdfSummaryRunning.Text);
                model.SummaryFunction = (ReportSummaryFunction)Convert.ToInt32(hdfSummaryFunction.Text);
                model.SummaryValue    = txtValue.Text;

                // check entity id
                if (model.Id > 0)
                {
                    // update
                    resultModel = ReportColumnController.Update(model);
                }
                else
                {
                    // insert
                    resultModel = ReportColumnController.Create(model);
                }

                // check result
                if (resultModel != null)
                {
                    Dialog.ShowNotification("Lưu thành công");
                    // hide window
                    wdSetting.Hide();
                    // reload data
                    gpReportColumn.Reload();
                }
                else
                {
                    Dialog.ShowNotification("Độ rộng của cột không hợp lệ");
                }
            }
            catch (Exception exception)
            {
                Dialog.ShowError(exception);
            }
        }
 private void SectionCanvas_RequestNewDataSection(object sender, ReportColumnModel column)
 {
     this.RequestNewDataSections?.Invoke(sender, column, this.SectionGroupIndex);
 }
 private void ReportColumn_Added(object sender, ReportColumnModel column)
 {
     this.ReportColumnAdded?.Invoke(sender, column, this.SectionGroupIndex);
 }
 public void AddReportColumn(ReportColumnModel column)
 {
     this.uxSectionCanvas.AddReportColumn(column);
 }
Exemplo n.º 14
0
        /// <summary>
        /// Init setting window
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void InitWindow(object sender, DirectEventArgs e)
        {
            try
            {
                // init id
                var param = e.ExtraParams["Id"];

                // parse id
                if (int.TryParse(param, out var id))
                {
                    // init window props
                    if (id > 0)
                    {
                        // edit
                        wdSetting.Title = @"Sửa";
                        wdSetting.Icon  = Icon.Pencil;
                    }
                    else
                    {
                        // insert
                        wdSetting.Title = @"Thêm mới";
                        wdSetting.Icon  = Icon.Add;
                    }

                    // init id
                    hdfId.Text = id.ToString();

                    // init object
                    var model = new ReportColumnModel();

                    // check id
                    if (id > 0)
                    {
                        var result = ReportColumnController.GetById(id);
                        if (result != null)
                        {
                            model = result;
                        }
                    }

                    // set props
                    txtName.Text            = model.Name;
                    hdfFieldName.Text       = model.FieldName;
                    cboFieldName.Text       = model.FieldName;
                    hdfTextAlign.Text       = ((int)model.TextAlign).ToString();
                    cboTextAlign.Text       = model.TextAlignName;
                    txtFontSize.Text        = model.FontSize.ToString();
                    txtFormat.Text          = model.Format;
                    hdfParentId.Text        = model.ParentId.ToString();
                    cboParent.Text          = model.ParentName;
                    txtWidth.Text           = model.Width.ToString();
                    txtHeight.Text          = model.Height.ToString();
                    txtOrder.Text           = model.Order.ToString();
                    hdfIsGroup.Text         = model.IsGroup.ToString();
                    cboGroup.Text           = model.GroupName;
                    hdfDataType.Text        = ((int)model.DataType).ToString();
                    cboDataType.Text        = model.DataTypeName;
                    hdfStatus.Text          = ((int)model.Status).ToString();
                    cboStatus.Text          = model.StatusName;
                    hdfType.Text            = ((int)model.Type).ToString();
                    cboType.Text            = model.TypeName;
                    hdfSummaryRunning.Text  = ((int)model.SummaryRunning).ToString();
                    cboSummaryRunning.Text  = model.SummaryRunningName;
                    hdfSummaryFunction.Text = ((int)model.SummaryFunction).ToString();
                    cboSummaryFunction.Text = model.SummaryFunctionName;
                    txtValue.Text           = model.SummaryValue;

                    // show window
                    wdSetting.Show();
                }
            }
            catch (Exception exception)
            {
                Dialog.ShowError(exception);
            }
        }
Exemplo n.º 15
0
        public ActionResult Edit(ReportColumnModel reportColumn)
        {
            if (db.ReportColumns.FirstOrDefault(a => a.Id != reportColumn.Id && a.BusinessId == CurrentBusinessId && a.ServiceId == reportColumn.ServiceId && a.ColumnName.ToLower().Replace(" ", "") == reportColumn.ColumnName.ToLower().Replace(" ", "")) != null)
            {
                ViewBag.RolePrivilegesList       = new SelectList(db.Roles.Where(a => a.BusinessId == CurrentBusinessId), "Id", "Name");
                ViewBag.DepartmentPrivilegesList = new SelectList(db.Departments.Where(a => a.BusinessId == CurrentBusinessId), "Id", "DepartmentName");
                ViewBag.UserPrivilegesList       = new SelectList(db.Users.Where(a => a.BusinessId == CurrentUser.BusinessId && a.IsActive == true && !a.Roles.Select(y => y.Name).Contains("BusinessAdmin") && !a.Roles.Select(y => y.Name).Contains("SuperAdmin") && !a.Roles.Select(y => y.Name).Contains("MasterAdmin")), "Id", "FirstName");
                ViewBag.ServiceId = new SelectList(db.LookupEnrolledServices.Where(a => a.BusinessId == CurrentBusinessId), "Id", "ServiceName", reportColumn.ServiceId);
                ViewBag.CreatedBy = new SelectList(db.Users, "Id", "FirstName", reportColumn.CreatedBy);
                ViewBag.UpdatedBy = new SelectList(db.Users, "Id", "FirstName", reportColumn.UpdatedBy);
                ModelState.AddModelError("Error", "Allready Used");
                return(View(reportColumn));
            }
            else
            {
                if (ModelState.IsValid)
                {
                    var model = db.ReportColumns.Find(reportColumn.Id);
                    if (model != null)
                    {
                        model.ServiceId       = reportColumn.ServiceId;
                        model.ColumnName      = reportColumn.ColumnName.Replace(" ", "");
                        model.IsMandatory     = reportColumn.IsMandatory;
                        model.DisplayInFilter = reportColumn.DisplayInFilter;
                        model.UpdatedBy       = CurrentUserId;
                        model.UpdatedOn       = System.DateTime.UtcNow;
                        model.ShowInGrid      = reportColumn.ShowInGrid;
                        #region RolePrivileges
                        var RolePrivileges = db.SalesRolePrivileges.Where(t => t.ColumnId == reportColumn.Id).Select(a => a.RoleId).ToList();
                        foreach (var item in RolePrivileges)
                        {
                            var delete = db.SalesRolePrivileges.Where(a => a.ColumnId == reportColumn.Id & a.RoleId == item).FirstOrDefault();
                            db.SalesRolePrivileges.Remove(delete);
                            db.SaveChanges();
                        }
                        if (reportColumn.RolePrivileges != null)
                        {
                            foreach (var item in reportColumn.RolePrivileges)
                            {
                                db.SalesRolePrivileges.Add(new SalesRolePrivilege
                                {
                                    ColumnId  = reportColumn.Id,
                                    RoleId    = item,
                                    CreatedBy = CurrentUserId,
                                    CreatedOn = System.DateTime.UtcNow,
                                    UpdatedBy = CurrentUserId,
                                    UpdatedOn = System.DateTime.UtcNow
                                });
                                db.SaveChanges();
                            }
                        }
                        #endregion

                        #region DepartmentPrivileges
                        var DepartmentPrivileges = db.SalesDepartmentPrivileges.Where(t => t.ColumnId == reportColumn.Id).Select(a => a.DepartmentId).ToList();
                        foreach (var item in DepartmentPrivileges)
                        {
                            var delete = db.SalesDepartmentPrivileges.Where(a => a.ColumnId == reportColumn.Id & a.DepartmentId == item).FirstOrDefault();
                            db.SalesDepartmentPrivileges.Remove(delete);
                            db.SaveChanges();
                        }
                        if (reportColumn.DepartmentPrivileges != null)
                        {
                            foreach (var item in reportColumn.DepartmentPrivileges)
                            {
                                db.SalesDepartmentPrivileges.Add(new SalesDepartmentPrivilege
                                {
                                    ColumnId     = reportColumn.Id,
                                    DepartmentId = item,
                                    CreatedBy    = CurrentUserId,
                                    CreatedOn    = System.DateTime.UtcNow,
                                    UpdatedBy    = CurrentUserId,
                                    UpdatedOn    = System.DateTime.UtcNow
                                });
                                db.SaveChanges();
                            }
                        }
                        #endregion

                        #region UserPrivileges
                        var UserPrivileges = db.SalesUserPrivileges.Where(t => t.ColumnId == reportColumn.Id).Select(a => a.UserId).ToList();
                        foreach (var item in UserPrivileges)
                        {
                            var delete = db.SalesUserPrivileges.Where(a => a.ColumnId == reportColumn.Id & a.UserId == item).FirstOrDefault();
                            db.SalesUserPrivileges.Remove(delete);
                            db.SaveChanges();
                        }
                        if (reportColumn.UserPrivileges != null)
                        {
                            foreach (var item in reportColumn.UserPrivileges)
                            {
                                db.SalesUserPrivileges.Add(new SalesUserPrivilege {
                                    ColumnId  = reportColumn.Id,
                                    UserId    = item,
                                    CreatedBy = CurrentUserId,
                                    CreatedOn = System.DateTime.UtcNow,
                                    UpdatedBy = CurrentUserId,
                                    UpdatedOn = System.DateTime.UtcNow
                                });
                                db.SaveChanges();
                            }
                        }
                        #endregion
                        db.SaveChanges();
                    }
                    //reportColumn.ColumnName = reportColumn.ColumnName.Replace(" ", "");
                    //reportColumn.BusinessId = (int)CurrentBusinessId;
                    //reportColumn.UpdatedBy = CurrentUserId;
                    //reportColumn.UpdatedOn = System.DateTime.UtcNow;
                    //db.Entry(reportColumn).State = EntityState.Modified;

                    return(RedirectToAction("Index"));
                }
                ViewBag.RolePrivilegesList       = new SelectList(db.Roles.Where(a => a.BusinessId == CurrentBusinessId), "Id", "Name");
                ViewBag.DepartmentPrivilegesList = new SelectList(db.Departments.Where(a => a.BusinessId == CurrentBusinessId), "Id", "DepartmentName");
                ViewBag.UserPrivilegesList       = new SelectList(db.Users.Where(a => a.BusinessId == CurrentUser.BusinessId && a.IsActive == true && !a.Roles.Select(y => y.Name).Contains("BusinessAdmin") && !a.Roles.Select(y => y.Name).Contains("SuperAdmin") && !a.Roles.Select(y => y.Name).Contains("MasterAdmin")), "Id", "FirstName");
                ViewBag.ServiceId = new SelectList(db.LookupEnrolledServices.Where(a => a.BusinessId == CurrentBusinessId), "Id", "ServiceName", reportColumn.ServiceId);
                ViewBag.CreatedBy = new SelectList(db.Users, "Id", "FirstName", reportColumn.CreatedBy);
                ViewBag.UpdatedBy = new SelectList(db.Users, "Id", "FirstName", reportColumn.UpdatedBy);
                return(View(reportColumn));
            }
        }
Exemplo n.º 16
0
 public ActionResult Create(ReportColumnModel reportColumn)
 {
     if (db.ReportColumns.FirstOrDefault(a => a.BusinessId == CurrentBusinessId && a.ServiceId == reportColumn.ServiceId && a.ColumnName.ToLower().Replace(" ", "") == reportColumn.ColumnName.ToLower().Replace(" ", "")) != null)
     {
         ViewBag.RolePrivilegesList       = new SelectList(db.Roles.Where(a => a.BusinessId == CurrentBusinessId), "Id", "Name");
         ViewBag.DepartmentPrivilegesList = new SelectList(db.Departments.Where(a => a.BusinessId == CurrentBusinessId), "Id", "DepartmentName");
         ViewBag.UserPrivilegesList       = new SelectList(db.Users.Where(a => a.BusinessId == CurrentUser.BusinessId && a.IsActive == true && !a.Roles.Select(y => y.Name).Contains("BusinessAdmin") && !a.Roles.Select(y => y.Name).Contains("SuperAdmin") && !a.Roles.Select(y => y.Name).Contains("MasterAdmin")), "Id", "FirstName");
         ViewBag.ServiceId = new SelectList(db.LookupEnrolledServices.Where(a => a.BusinessId == CurrentBusinessId), "Id", "ServiceName");
         ViewBag.CreatedBy = new SelectList(db.Users, "Id", "FirstName");
         ViewBag.UpdatedBy = new SelectList(db.Users, "Id", "FirstName");
         ModelState.AddModelError("Error", "Allready Used");
         return(View(reportColumn));
     }
     else
     {
         if (ModelState.IsValid)
         {
             var model = db.ReportColumns.Add(new ReportColumn
             {
                 ColumnName      = reportColumn.ColumnName.Replace(" ", ""),
                 BusinessId      = (int)CurrentBusinessId,
                 CreatedBy       = CurrentUserId,
                 CreatedOn       = System.DateTime.UtcNow,
                 ServiceId       = reportColumn.ServiceId,
                 DisplayInFilter = reportColumn.DisplayInFilter,
                 IsMandatory     = reportColumn.IsMandatory,
                 ShowInGrid      = reportColumn.ShowInGrid
             });
             if (db.SaveChanges() > 0)
             {
                 if (reportColumn.RolePrivileges != null)
                 {
                     foreach (var item in reportColumn.RolePrivileges)
                     {
                         db.SalesRolePrivileges.Add(new SalesRolePrivilege {
                             ColumnId = model.Id, RoleId = item, CreatedBy = CurrentUser.Id, CreatedOn = System.DateTime.UtcNow
                         });
                         db.SaveChanges();
                     }
                 }
                 if (reportColumn.DepartmentPrivileges != null)
                 {
                     foreach (var item in reportColumn.DepartmentPrivileges)
                     {
                         db.SalesDepartmentPrivileges.Add(new SalesDepartmentPrivilege {
                             ColumnId = model.Id, DepartmentId = item, CreatedBy = CurrentUser.Id, CreatedOn = System.DateTime.UtcNow
                         });
                         db.SaveChanges();
                     }
                 }
                 if (reportColumn.UserPrivileges != null)
                 {
                     foreach (var item in reportColumn.UserPrivileges)
                     {
                         db.SalesUserPrivileges.Add(new SalesUserPrivilege {
                             ColumnId = model.Id, UserId = item, CreatedBy = CurrentUser.Id, CreatedOn = System.DateTime.UtcNow
                         });
                         db.SaveChanges();
                     }
                 }
             }
             return(RedirectToAction("Index"));
         }
         ViewBag.RolePrivilegesList       = new SelectList(db.Roles.Where(a => a.BusinessId == CurrentBusinessId), "Id", "Name");
         ViewBag.DepartmentPrivilegesList = new SelectList(db.Departments.Where(a => a.BusinessId == CurrentBusinessId), "Id", "DepartmentName");
         ViewBag.UserPrivilegesList       = new SelectList(db.Users.Where(a => a.BusinessId == CurrentUser.BusinessId && a.IsActive == true && !a.Roles.Select(y => y.Name).Contains("BusinessAdmin") && !a.Roles.Select(y => y.Name).Contains("SuperAdmin") && !a.Roles.Select(y => y.Name).Contains("MasterAdmin")), "Id", "FirstName");
         ViewBag.ServiceId = new SelectList(db.LookupEnrolledServices.Where(a => a.BusinessId == CurrentBusinessId), "Id", "ServiceName");
         ViewBag.CreatedBy = new SelectList(db.Users, "Id", "FirstName");
         ViewBag.UpdatedBy = new SelectList(db.Users, "Id", "FirstName");
         return(View(reportColumn));
     }
 }
        public ActionResult ReportColumnEdit(ReportColumnModel reportColumn)
        {
            string[] reservedFields = new string[] { "Id", "BusinessId", "ServiceId", "PatientId", "PatientFirstName", "PatientLastName", "SpecimenCollectionDate", "SpecimenReceivedDate", "ReportedDate", "PracticeId",
                                                     "PracticeName", "ProviderId", "ProviderFirstName", "ProviderLastName", "ProviderNpi", "RepId", "RepFirstName", "RepLastName", "CreatedOn", "CreatedBy",
                                                     "UpdatedOn", "UpdatedBy", "OldId", "IsColumnValuesImported", "OldReportId" };
            if (reservedFields.Contains(reportColumn.ColumnName))
            {
                ModelState.AddModelError("Error", string.Format("{0} is reserved, please choose another column name", reportColumn.ColumnName));
                return(View(reportColumn));
            }
            if (db.ReportColumns.FirstOrDefault(a => a.Id != reportColumn.Id && a.BusinessId == CurrentBusinessId && a.ServiceId == reportColumn.ServiceId && a.ColumnName.ToLower().Replace(" ", "") == reportColumn.ColumnName.ToLower().Replace(" ", "")) != null)
            {
                ViewBag.RolePrivilegesList       = new SelectList(db.Roles.Where(a => a.BusinessId == CurrentBusinessId).OrderBy(a => a.Name), "Id", "Name");
                ViewBag.DepartmentPrivilegesList = new SelectList(db.Departments.Where(a => a.BusinessId == CurrentBusinessId).OrderBy(a => a.DepartmentName), "Id", "DepartmentName");
                //ViewBag.UserPrivilegesList = new SelectList(db.Users.Where(a => a.BusinessId == CurrentUser.BusinessId && a.IsActive == true && !a.Roles.Select(y => y.Name).Contains("BusinessAdmin") && !a.Roles.Select(y => y.Name).Contains("SuperAdmin") && !a.Roles.Select(y => y.Name).Contains("MasterAdmin")), "Id", "FirstName");
                ViewBag.UserPrivilegesList = new SelectList(db.Users.Where(a => a.BusinessId == CurrentUser.BusinessId && a.IsActive == true && !a.Roles.Select(y => y.Name).Contains("BusinessAdmin") && !a.Roles.Select(y => y.Name).Contains("SuperAdmin") && !a.Roles.Select(y => y.Name).Contains("MasterAdmin")).Select(s => new
                {
                    Id       = s.Id,
                    UserName = s.FirstName + " " + s.LastName + " @" + s.UserName
                }), "Id", "UserName").OrderBy(a => a.Text);
                ViewBag.ServiceId = new SelectList(db.LookupEnrolledServices.Where(a => a.BusinessId == CurrentBusinessId).OrderBy(a => a.ServiceName), "Id", "ServiceName", reportColumn.ServiceId);
                ViewBag.CreatedBy = new SelectList(db.Users, "Id", "FirstName", reportColumn.CreatedBy);
                ViewBag.UpdatedBy = new SelectList(db.Users, "Id", "FirstName", reportColumn.UpdatedBy);
                ModelState.AddModelError("Error", "Already Used");
                return(View(reportColumn));
            }
            else
            {
                if (ModelState.IsValid)
                {
                    var    model         = db.ReportColumns.Find(reportColumn.Id);
                    string oldColumnName = model.ColumnName;

                    if (model != null)
                    {
                        model.ServiceId       = reportColumn.ServiceId;
                        model.ColumnName      = reportColumn.ColumnName.Replace(" ", "");
                        model.IsMandatory     = reportColumn.IsMandatory;
                        model.DisplayInFilter = reportColumn.DisplayInFilter;
                        model.UpdatedBy       = CurrentUserId;
                        model.UpdatedOn       = System.DateTime.UtcNow;
                        model.ShowInGrid      = reportColumn.ShowInGrid;
                        model.DisplayName     = reportColumn.DisplayName;
                        model.ColumnType      = reportColumn.ColumnType;
                        model.InputType       = reportColumn.InputType;
                        #region RolePrivileges
                        var RolePrivileges = db.SalesRolePrivileges.Where(t => t.ColumnId == reportColumn.Id).Select(a => a.RoleId).ToList();
                        foreach (var item in RolePrivileges)
                        {
                            var delete = db.SalesRolePrivileges.Where(a => a.ColumnId == reportColumn.Id & a.RoleId == item).FirstOrDefault();
                            db.SalesRolePrivileges.Remove(delete);
                            db.SaveChanges();
                        }
                        if (reportColumn.RolePrivileges != null)
                        {
                            foreach (var item in reportColumn.RolePrivileges)
                            {
                                db.SalesRolePrivileges.Add(new SalesRolePrivilege
                                {
                                    ColumnId  = reportColumn.Id,
                                    RoleId    = item,
                                    CreatedBy = CurrentUserId,
                                    CreatedOn = System.DateTime.UtcNow,
                                    UpdatedBy = CurrentUserId,
                                    UpdatedOn = System.DateTime.UtcNow
                                });
                                db.SaveChanges();
                            }
                        }
                        #endregion

                        #region DepartmentPrivileges
                        var DepartmentPrivileges = db.SalesDepartmentPrivileges.Where(t => t.ColumnId == reportColumn.Id).Select(a => a.DepartmentId).ToList();
                        foreach (var item in DepartmentPrivileges)
                        {
                            var delete = db.SalesDepartmentPrivileges.Where(a => a.ColumnId == reportColumn.Id & a.DepartmentId == item).FirstOrDefault();
                            db.SalesDepartmentPrivileges.Remove(delete);
                            db.SaveChanges();
                        }
                        if (reportColumn.DepartmentPrivileges != null)
                        {
                            foreach (var item in reportColumn.DepartmentPrivileges)
                            {
                                db.SalesDepartmentPrivileges.Add(new SalesDepartmentPrivilege
                                {
                                    ColumnId     = reportColumn.Id,
                                    DepartmentId = item,
                                    CreatedBy    = CurrentUserId,
                                    CreatedOn    = System.DateTime.UtcNow,
                                    UpdatedBy    = CurrentUserId,
                                    UpdatedOn    = System.DateTime.UtcNow
                                });
                                db.SaveChanges();
                            }
                        }
                        #endregion

                        #region UserPrivileges
                        var UserPrivileges = db.SalesUserPrivileges.Where(t => t.ColumnId == reportColumn.Id).Select(a => a.UserId).ToList();
                        foreach (var item in UserPrivileges)
                        {
                            var delete = db.SalesUserPrivileges.Where(a => a.ColumnId == reportColumn.Id & a.UserId == item).FirstOrDefault();
                            db.SalesUserPrivileges.Remove(delete);
                            db.SaveChanges();
                        }
                        if (reportColumn.UserPrivileges != null)
                        {
                            foreach (var item in reportColumn.UserPrivileges)
                            {
                                db.SalesUserPrivileges.Add(new SalesUserPrivilege
                                {
                                    ColumnId  = reportColumn.Id,
                                    UserId    = item,
                                    CreatedBy = CurrentUserId,
                                    CreatedOn = System.DateTime.UtcNow,
                                    UpdatedBy = CurrentUserId,
                                    UpdatedOn = System.DateTime.UtcNow
                                });
                                db.SaveChanges();
                            }
                        }
                        #endregion

                        var objUserColumnVisibility = db.UserColumnVisibilities.Where(a => a.BusinessId == CurrentBusinessId && a.ColumnName == oldColumnName && a.ServiceId == model.ServiceId);
                        if (objUserColumnVisibility.Count() > 0)
                        {
                            foreach (var item in objUserColumnVisibility)
                            {
                                item.ColumnName  = reportColumn.ColumnName;
                                item.DisplayName = reportColumn.DisplayName;
                            }
                        }

                        db.SaveChanges();
                    }
                    return(RedirectToAction("ReportColumns", new { id = reportColumn.ServiceId }));
                }
                ViewBag.RolePrivilegesList       = new SelectList(db.Roles.Where(a => a.BusinessId == CurrentBusinessId).OrderBy(a => a.Name), "Id", "Name");
                ViewBag.DepartmentPrivilegesList = new SelectList(db.Departments.Where(a => a.BusinessId == CurrentBusinessId).OrderBy(a => a.DepartmentName), "Id", "DepartmentName");
                //ViewBag.UserPrivilegesList = new SelectList(db.Users.Where(a => a.BusinessId == CurrentUser.BusinessId && a.IsActive == true && !a.Roles.Select(y => y.Name).Contains("BusinessAdmin") && !a.Roles.Select(y => y.Name).Contains("SuperAdmin") && !a.Roles.Select(y => y.Name).Contains("MasterAdmin")), "Id", "FirstName");
                ViewBag.UserPrivilegesList = new SelectList(db.Users.Where(a => a.BusinessId == CurrentUser.BusinessId && a.IsActive == true && !a.Roles.Select(y => y.Name).Contains("BusinessAdmin") && !a.Roles.Select(y => y.Name).Contains("SuperAdmin") && !a.Roles.Select(y => y.Name).Contains("MasterAdmin")).Select(s => new
                {
                    Id       = s.Id,
                    UserName = s.FirstName + " " + s.LastName + " @" + s.UserName
                }), "Id", "UserName").OrderBy(a => a.Text);
                ViewBag.ServiceId = new SelectList(db.LookupEnrolledServices.Where(a => a.BusinessId == CurrentBusinessId).OrderBy(a => a.ServiceName), "Id", "ServiceName", reportColumn.ServiceId);
                ViewBag.CreatedBy = new SelectList(db.Users, "Id", "FirstName", reportColumn.CreatedBy);
                ViewBag.UpdatedBy = new SelectList(db.Users, "Id", "FirstName", reportColumn.UpdatedBy);
                return(View(reportColumn));
            }
        }