public void ShowDetailWindow(int lscId, string projectId)
        {
            try {
                var lsc = new BLsc().GetLsc(lscId);
                if (lsc == null)
                {
                    WebUtility.ShowMessage(EnmErrType.Warning, "无法获取Lsc信息");
                    return;
                }

                var connectionString = WebUtility.CreateLscConnectionString(lsc);
                var project          = new BAppointment().GetProject(lsc.LscID, lsc.LscName, projectId, connectionString);
                if (project == null)
                {
                    WebUtility.ShowMessage(EnmErrType.Warning, "无法获取工程信息");
                    return;
                }

                ProjectIdField.Text   = project.ProjectId;
                ProjNameField.Text    = project.ProjectName;
                StartTimeField.Text   = WebUtility.GetDateString(project.BeginTime);
                EndTimeField.Text     = WebUtility.GetDateString(project.EndTime);
                ResponsibleField.Text = project.Responsible;
                PhoneField.Text       = project.ContactPhone;
                CompanyField.Text     = project.Company;
                CommentField.Text     = project.Comment;
                EnabledField.Text     = WebUtility.GetBooleanName(project.Enabled);
                DetailWindow.Show();
            } catch (Exception err) {
                WebUtility.WriteLog(EnmSysLogLevel.Error, EnmSysLogType.Exception, err.ToString(), Page.User.Identity.Name);
                WebUtility.ShowMessage(EnmErrType.Error, err.Message);
            }
        }
        /// <summary>
        /// Window Project ComboBox Refresh
        /// </summary>
        protected void OnWProjectRefresh(object sender, StoreRefreshDataEventArgs e)
        {
            try {
                var data = new List <object>();
                if (WLscsComboBox.SelectedItem.Value != null &&
                    WLscsComboBox.SelectedItem.Value != String.Empty)
                {
                    var lscId = Int32.Parse(WLscsComboBox.SelectedItem.Value);
                    var lsc   = new BLsc().GetLsc(lscId);
                    if (lsc != null)
                    {
                        var connectionString = WebUtility.CreateLscConnectionString(lsc);
                        var projects         = new BAppointment().GetProjectItem(lsc.LscID, lsc.LscName, connectionString);
                        foreach (var p in projects)
                        {
                            data.Add(new {
                                Id   = p.ProjectId,
                                Name = p.ProjectName
                            });
                        }
                    }
                }

                WProjectStore.DataSource = data;
                WProjectStore.DataBind();
            } catch (Exception err) {
                WebUtility.WriteLog(EnmSysLogLevel.Error, EnmSysLogType.Exception, err.ToString(), Page.User.Identity.Name);
                WebUtility.ShowMessage(EnmErrType.Error, err.Message);
            }
        }
        public string Save()
        {
            try {
                if (WLscsComboBox.SelectedItem.Value != null && WLscsComboBox.SelectedItem.Value.Trim() != String.Empty)
                {
                    var lscId = Int32.Parse(WLscsComboBox.SelectedItem.Value);
                    var lsc   = new BLsc().GetLsc(lscId);
                    if (lsc == null)
                    {
                        return(String.Format("{{\"Status\":{0}, \"Msg\":\"{1}\"}}", 0, "无法获取Lsc信息"));
                    }

                    var project = new ProjectInfo();
                    project.LscID        = lsc.LscID;
                    project.LscName      = lsc.LscName;
                    project.ProjectId    = ProjectIdField.Text.Trim();
                    project.ProjectName  = ProjNameField.Text.Trim();
                    project.BeginTime    = DateTime.Parse(StartTimeField.Text);
                    project.EndTime      = DateTime.Parse(EndTimeField.Text);
                    project.Responsible  = ResponsibleField.Text.Trim();
                    project.ContactPhone = PhoneField.Text.Trim();
                    project.Company      = CompanyField.Text.Trim();
                    project.Comment      = CommentField.Text.Trim();
                    project.Enabled      = EnabledCheckbox.Checked;

                    var apptEntity       = new BAppointment();
                    var connectionString = WebUtility.CreateLscConnectionString(lsc);
                    if (OperationWindowHF.Text.Equals("Add") &&
                        apptEntity.ProjectExists(project.ProjectId, connectionString))
                    {
                        return(String.Format("{{\"Status\":{0}, \"Msg\":\"{1}\"}}", 0, "工程已存在"));
                    }

                    apptEntity.SaveProjects(new List <ProjectInfo>()
                    {
                        project
                    }, connectionString);
                    var userData = UserData;
                    var cacheKey = WebUtility.GetCacheKeyName(userData, "projects");
                    HttpRuntime.Cache.Remove(cacheKey);
                    return(String.Format("{{\"Status\":{0}, \"Msg\":\"{1}\"}}", 200, "数据保存成功"));
                }
            } catch (Exception err) {
                WebUtility.WriteLog(EnmSysLogLevel.Error, EnmSysLogType.Exception, err.ToString(), Page.User.Identity.Name);
                return(String.Format("{{\"Status\":{0}, \"Msg\":\"{1}\"}}", 0, WebUtility.JsonCharFilter(err.Message)));
            }
            return(String.Empty);
        }
        /// <summary>
        /// Add Data To Cache
        /// </summary>
        private List <AppointmentInfo> AddDataToCache()
        {
            var userData = UserData;
            var cacheKey = WebUtility.GetCacheKeyName(userData, "appointments");

            HttpRuntime.Cache.Remove(cacheKey);

            if (LscsComboBox.SelectedItem.Value == null || LscsComboBox.SelectedItem.Value == String.Empty)
            {
                return(null);
            }
            var ids = WebUtility.ItemSplit(LscsComboBox.SelectedItem.Value);

            if (ids.Length != 2)
            {
                return(null);
            }
            var lscId = Int32.Parse(ids[0]);
            var lsc   = new BLsc().GetLsc(lscId);

            if (lsc == null)
            {
                WebUtility.ShowMessage(EnmErrType.Warning, "无法获取Lsc信息");
                return(null);
            }

            var beginTime = DateTime.Parse(BeginDate.Text);
            var endTime   = DateTime.Parse(EndDate.Text);
            var queryType = Int32.Parse(QueryTypeComboBox.SelectedItem.Value);
            var queryText = QueryContentTextField.Text.Trim();

            var appointmentEntity = new BAppointment();
            var connectionString  = WebUtility.CreateLscConnectionString(lsc);
            var appointments      = appointmentEntity.GetAppointments(lsc.LscID, lsc.LscName, connectionString, beginTime, endTime, queryType, queryText);
            var cacheDuration     = Int32.Parse(WebConfigurationManager.AppSettings["DefaultCacheDuration"]);

            HttpRuntime.Cache.Insert(cacheKey, appointments, null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(cacheDuration), CacheItemPriority.Default, null);
            return(appointments);
        }
Exemple #5
0
        /// <summary>
        /// Add Data To Cache
        /// </summary>
        private List <ProjectReportPageEntity> AddDataToCache()
        {
            var userData = UserData;
            var cacheKey = WebUtility.GetCacheKeyName(userData, "project-report-entities");

            HttpRuntime.Cache.Remove(cacheKey);

            if (LscsComboBox.SelectedItem.Value == null || LscsComboBox.SelectedItem.Value == String.Empty)
            {
                return(null);
            }
            var ids = WebUtility.ItemSplit(LscsComboBox.SelectedItem.Value);

            if (ids.Length != 2)
            {
                return(null);
            }
            var lsc = new BLsc().GetLsc(Int32.Parse(ids[0]));

            if (lsc == null)
            {
                WebUtility.ShowMessage(EnmErrType.Warning, "无法获取Lsc信息");
                return(null);
            }

            var beginTime = DateTime.Parse(BeginDate.Text);
            var endTime   = DateTime.Parse(EndDate.Text);
            var area2Id   = WebUtility.DefaultInt32;
            var area3Id   = WebUtility.DefaultInt32;

            if (Area2ComboBox.SelectedIndex > 0)
            {
                area2Id = Int32.Parse(Area2ComboBox.SelectedItem.Value);
            }
            if (Area3ComboBox.SelectedIndex > 0)
            {
                area3Id = Int32.Parse(Area3ComboBox.SelectedItem.Value);
            }

            var appointmentEntity = new BAppointment();
            var connectionString  = WebUtility.CreateLscConnectionString(lsc);

            var appointments1 = appointmentEntity.GetAppointments(lsc.LscID, lsc.LscName, connectionString, beginTime, endTime, 0, null);
            var appointments2 = appointmentEntity.GetHisAppointments(lsc.LscID, lsc.LscName, beginTime, endTime, 0, null);

            appointments1.AddRange(appointments2);

            var lscappointments = appointments1.FindAll(a => a.LscIncluded == lsc.LscID);
            var nonappointments = appointments1.FindAll(a => a.LscIncluded != lsc.LscID);

            var staSet = new List <IDValuePair <int, AppointmentInfo> >();

            foreach (var apt in nonappointments)
            {
                if (apt.StaIncluded != null && apt.StaIncluded.Trim() != String.Empty)
                {
                    var array = apt.StaIncluded.Split(';');
                    foreach (var id in array)
                    {
                        if (id.Trim() != String.Empty)
                        {
                            staSet.Add(new IDValuePair <int, AppointmentInfo>(Int32.Parse(id), apt));
                        }
                    }
                }
            }

            var devSet = new List <IDValuePair <int, AppointmentInfo> >();

            foreach (var apt in nonappointments)
            {
                if (apt.DevIncluded != null && apt.DevIncluded.Trim() != String.Empty)
                {
                    var array = apt.DevIncluded.Split(';');
                    foreach (var id in array)
                    {
                        if (id.Trim() != String.Empty)
                        {
                            devSet.Add(new IDValuePair <int, AppointmentInfo>(Int32.Parse(id), apt));
                        }
                    }
                }
            }

            var otherEntity = new BOther();
            var stations    = otherEntity.GetStations(lsc.LscID);
            var master1     = from ss in staSet
                              join sta in stations on ss.ID equals sta.StaID
                              select new IDValuePair <int, AppointmentInfo> {
                ID    = sta.Area3ID,
                Value = ss.Value
            };

            var devices = otherEntity.GetDevices(lsc.LscID);
            var master2 = from ds in devSet
                          join dev in devices on ds.ID equals dev.DevID
                          select new IDValuePair <int, AppointmentInfo> {
                ID    = dev.Area3ID,
                Value = ds.Value
            };

            var master = new Dictionary <String, IDValuePair <int, AppointmentInfo> >();

            foreach (var mt in master1)
            {
                master[String.Format("{0}-{1}", mt.ID, mt.Value.Id)] = mt;
            }
            foreach (var mt in master2)
            {
                master[String.Format("{0}-{1}", mt.ID, mt.Value.Id)] = mt;
            }

            var areas = otherEntity.GetAreas(lsc.LscID);

            if (area2Id != WebUtility.DefaultInt32)
            {
                areas = areas.FindAll(a => a.Area2ID == area2Id);
            }
            if (area3Id != WebUtility.DefaultInt32)
            {
                areas = areas.FindAll(a => a.Area3ID == area3Id);
            }

            foreach (var area in areas)
            {
                foreach (var apt in lscappointments)
                {
                    master[String.Format("{0}-{1}", area.Area3ID, apt.Id)] = new IDValuePair <int, AppointmentInfo>(area.Area3ID, apt);
                }
            }

            var a1 = from mt in master.Values
                     group mt by new { AreaId = mt.ID, mt.Value.ProjectId } into g
                select new {
                g.Key.AreaId,
                g.Key.ProjectId,
                Time = g.Sum(a => a.Value.EndTime.Subtract(a.Value.StartTime).TotalSeconds)
            };

            var projects = appointmentEntity.GetProjectItem(lsc.LscID, lsc.LscName, connectionString);
            var a2       = from a in a1
                           join p in projects on a.ProjectId equals p.ProjectId
                           select new {
                AreaId      = a.AreaId,
                Time        = a.Time,
                Project     = p,
                IsExProject = a.Time > p.EndTime.Subtract(p.BeginTime).TotalSeconds
            };

            var a3 = from a in a2
                     group a by new { a.AreaId } into g
                select new {
                g.Key.AreaId,
                Time       = g.Sum(p => p.Time),
                Projects   = g.Select(p => p.Project).ToList(),
                ExProjects = g.Where(p => p.IsExProject).Select(p => p.Project).ToList()
            };

            var a4 = from area in areas
                     join a in a3 on area.Area3ID equals a.AreaId into l
                     from aa in l.DefaultIfEmpty()
                     select new ProjectReportPageEntity {
                Area       = area,
                Time       = aa != null ? aa.Time : 0,
                Projects   = aa != null ? aa.Projects : new List <ProjectInfo>(),
                ExProjects = aa != null ? aa.ExProjects : new List <ProjectInfo>()
            };


            var result        = a4.ToList();
            var cacheDuration = Int32.Parse(WebConfigurationManager.AppSettings["DefaultCacheDuration"]);

            HttpRuntime.Cache.Insert(cacheKey, result, null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(cacheDuration), CacheItemPriority.Default, null);
            return(result);
        }
        public void ShowCmdWindow(string cmd, int lscId, int id)
        {
            try {
                StaIncludedField.Clear();
                DevIncludedField.Clear();
                StartTimeTextField.Clear();
                EndTimeTextField.Clear();
                BookingUserNameTextField.Clear();
                BookingUserPhoneTextField.Clear();
                LscCheckbox.Checked   = false;
                ProjStatusBox.Checked = false;

                WLscsComboBox.Disabled             = false;
                WProjectComboBox.Disabled          = false;
                StaIncludedField.Disabled          = false;
                DevIncludedField.Disabled          = false;
                StartTimeTextField.Disabled        = false;
                EndTimeTextField.Disabled          = false;
                BookingUserPhoneTextField.Disabled = false;
                LscCheckbox.Disabled   = false;
                ProjStatusBox.Disabled = false;
                JsonValueHF.Clear();
                AppointmentStatusBar.ClearStatus();

                var bt = DateTime.Now.AddMinutes(30);
                var et = bt.AddDays(1);
                StartTimeTextField.Text = WebUtility.GetDateString(bt);
                EndTimeTextField.Text   = WebUtility.GetDateString(et);

                switch (cmd)
                {
                case "Add":
                    AppointmentWindow.Title = "新增预约";
                    AppointmentWindow.Icon  = Icon.TagBlueAdd;
                    ProjStatusBox.Hide();

                    WLscsComboBox.GetStore().DataBind();
                    AppointmentWindow.Show();
                    break;

                case "Edit":
                    AppointmentWindow.Title = "编辑预约";
                    AppointmentWindow.Icon  = Icon.TagBlueEdit;
                    ProjStatusBox.Show();

                    var lsc = new BLsc().GetLsc(lscId);
                    if (lsc == null)
                    {
                        WebUtility.ShowMessage(EnmErrType.Warning, "无法获取Lsc信息");
                        return;
                    }

                    var connectionString = WebUtility.CreateLscConnectionString(lsc);
                    var appt             = new BAppointment().GetAppointment(lsc.LscID, lsc.LscName, id, connectionString);
                    if (appt == null)
                    {
                        WebUtility.ShowMessage(EnmErrType.Warning, "无法获取预约信息");
                        return;
                    }

                    if (!UserData.LscUsers.Any(lu => lu.LscID == appt.LscID && lu.UserID == appt.CreaterId))
                    {
                        WebUtility.ShowMessage(EnmErrType.Warning, "无编辑权限,仅预约设置人有此权限。");
                        return;
                    }

                    WLscsComboBox.Disabled    = true;
                    WProjectComboBox.Disabled = true;
                    if (appt.Status == EnmProjStatus.Using)
                    {
                        StaIncludedField.Disabled          = true;
                        DevIncludedField.Disabled          = true;
                        StartTimeTextField.Disabled        = true;
                        EndTimeTextField.Disabled          = true;
                        BookingUserPhoneTextField.Disabled = true;
                        LscCheckbox.Disabled = true;
                    }

                    JsonValueHF.Text = JsonConvert.SerializeObject(appt);
                    WLscsComboBox.SetValueAndFireSelect(appt.LscID);
                    AppointmentWindow.Show();
                    break;

                default:
                    break;
                }
            } catch (Exception err) {
                WebUtility.WriteLog(EnmSysLogLevel.Error, EnmSysLogType.Exception, err.ToString(), Page.User.Identity.Name);
                WebUtility.ShowMessage(EnmErrType.Error, err.Message);
            }
        }
        public void ShowCmdWindow(string cmd, int lscId, string projId)
        {
            try {
                WLscsComboBox.Disabled  = false;
                ProjectIdField.Disabled = false;
                ProjectIdField.Clear();
                ProjNameField.Clear();
                StartTimeField.Clear();
                EndTimeField.Clear();
                ResponsibleField.Clear();
                PhoneField.Clear();
                CompanyField.Clear();
                CommentField.Clear();
                EnabledCheckbox.Checked = true;
                TipsStatusBar.ClearStatus();

                switch (cmd)
                {
                case "Add":
                    ProjectWindow.Title = "新增工程";
                    ProjectWindow.Icon  = Icon.TagBlueAdd;
                    WLscsComboBox.GetStore().DataBind();
                    ProjectIdField.Text    = Guid.NewGuid().ToString("D").ToUpper();
                    StartTimeField.Text    = WebUtility.GetDateString(DateTime.Today);
                    EndTimeField.Text      = WebUtility.GetDateString(DateTime.Today.AddMonths(1).AddSeconds(-1));
                    OperationWindowHF.Text = "Add";
                    ProjectWindow.Show();
                    break;

                case "Edit":
                    ProjectWindow.Title     = "编辑工程";
                    ProjectWindow.Icon      = Icon.TagBlueEdit;
                    WLscsComboBox.Disabled  = true;
                    ProjectIdField.Disabled = true;
                    OperationWindowHF.Text  = "Edit";

                    var lsc = new BLsc().GetLsc(lscId);
                    if (lsc == null)
                    {
                        WebUtility.ShowMessage(EnmErrType.Warning, "无法获取Lsc信息");
                        return;
                    }

                    var connectionString = WebUtility.CreateLscConnectionString(lsc);
                    var project          = new BAppointment().GetProject(lsc.LscID, lsc.LscName, projId, connectionString);
                    if (project == null)
                    {
                        WebUtility.ShowMessage(EnmErrType.Warning, "无法获取工程信息");
                        return;
                    }

                    WLscsComboBox.SetValueAndFireSelect(lsc.LscID);
                    ProjectIdField.Text     = project.ProjectId;
                    ProjNameField.Text      = project.ProjectName;
                    StartTimeField.Text     = WebUtility.GetDateString(project.BeginTime);
                    EndTimeField.Text       = WebUtility.GetDateString(project.EndTime);
                    ResponsibleField.Text   = project.Responsible;
                    PhoneField.Text         = project.ContactPhone;
                    CompanyField.Text       = project.Company;
                    CommentField.Text       = project.Comment;
                    EnabledCheckbox.Checked = project.Enabled;
                    ProjectWindow.Show();
                    break;

                case "Del":
                    X.Msg.Confirm("确认对话框", "您确定要删除吗?", new MessageBoxButtonsConfig {
                        Yes = new MessageBoxButtonConfig {
                            Handler = String.Format(@"
                                X.ProjectManager.Delete({0},'{1}',{{
                                success: function(result) {{
                                    MainGridPagingToolbar.doRefresh();
                                }},
                                eventMask: {{
                                    showMask: true,
                                    target: 'customtarget',
                                    msg: '正在删除中...',
                                    customTarget: MainGridPanel.body.up('div')
                                }}}});", lscId, projId),
                            Text    = "确定"
                        },
                        No = new MessageBoxButtonConfig {
                            Text = "取消"
                        }
                    }).Show();
                    break;

                default:
                    break;
                }
            } catch (Exception err) {
                WebUtility.WriteLog(EnmSysLogLevel.Error, EnmSysLogType.Exception, err.ToString(), Page.User.Identity.Name);
                WebUtility.ShowMessage(EnmErrType.Error, err.Message);
            }
        }
        /// <summary>
        /// Add Data To Cache
        /// </summary>
        private List <AppointmentInfo> AddDataToCache()
        {
            var userData = UserData;
            var cacheKey = WebUtility.GetCacheKeyName(userData, "his-appointments");

            HttpRuntime.Cache.Remove(cacheKey);

            if (LscsComboBox.SelectedItem.Value == null || LscsComboBox.SelectedItem.Value == String.Empty)
            {
                return(null);
            }
            var ids = WebUtility.ItemSplit(LscsComboBox.SelectedItem.Value);

            if (ids.Length != 2)
            {
                return(null);
            }
            var lscId = Int32.Parse(ids[0]);
            var lsc   = new BLsc().GetLsc(lscId);

            if (lsc == null)
            {
                WebUtility.ShowMessage(EnmErrType.Warning, "无法获取Lsc信息");
                return(null);
            }

            var beginTime = DateTime.Parse(BeginDate.Text);
            var endTime   = DateTime.Parse(EndDate.Text);
            var queryType = Int32.Parse(QueryTypeComboBox.SelectedItem.Value);
            var queryText = QueryContentTextField.Text.Trim();

            var appointments = new BAppointment().GetHisAppointments(lsc.LscID, lsc.LscName, beginTime, endTime, queryType, queryText);

            if (appointments.Count > 0)
            {
                var users = new BUser().GetUsers(lsc.LscID, lsc.LscName, null, WebUtility.CreateLscConnectionString(lsc));
                if (users.Count > 0)
                {
                    appointments = (from a in appointments
                                    join u in users on new { UserID = a.CreaterId } equals new { UserID = u.UserID } into ug
                                    from ua in ug.DefaultIfEmpty()
                                    select new AppointmentInfo {
                        LscID = a.LscID,
                        LscName = a.LscName,
                        Id = a.Id,
                        StartTime = a.StartTime,
                        EndTime = a.EndTime,
                        LscIncluded = a.LscIncluded,
                        StaIncluded = a.StaIncluded,
                        DevIncluded = a.DevIncluded,
                        ProjectId = a.ProjectId,
                        ProjectName = a.ProjectName,
                        Status = a.Status,
                        CreaterId = a.CreaterId,
                        Creater = ua != null?ua.UserName:a.Creater,
                        ContactPhone = ua != null?ua.MobilePhone:a.ContactPhone,
                        CreatedTime = a.CreatedTime,
                        RecordTime = a.RecordTime
                    }).OrderBy(a => a.Id).ToList();
                }
            }

            var cacheDuration = Int32.Parse(WebConfigurationManager.AppSettings["DefaultCacheDuration"]);

            HttpRuntime.Cache.Insert(cacheKey, appointments, null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(cacheDuration), CacheItemPriority.Default, null);
            return(appointments);
        }