Пример #1
0
        private void CreateStatusRecords()
        {
            var statusRecords = this.statusRepository.Table.ToList();

            var statusNames = new Tuple <int, string>[] {
                new Tuple <int, string>(StatusRecord.NewStatus, "New"),
                new Tuple <int, string>(StatusRecord.OpenStatus, "In Progress"),
                new Tuple <int, string>(StatusRecord.DeferredStatus, "Deferred"),
                new Tuple <int, string>(StatusRecord.PendingInputStatus, "Pending input"),
                new Tuple <int, string>(StatusRecord.ClosedStatus, "Completed")
            };

            for (int i = 0; i < statusNames.Length; i++)
            {
                StatusRecord statusRecord = statusRecords.FirstOrDefault(c => c.StatusTypeId == statusNames[i].Item1);
                if (statusRecord == null)
                {
                    statusRecord = new StatusRecord
                    {
                        OrderId      = i + 1,
                        Name         = statusNames[i].Item2,
                        StatusTypeId = statusNames[i].Item1,
                        IsHardCode   = true
                    };

                    this.statusRepository.Create(statusRecord);
                }
            }

            this.statusRepository.Flush();
        }
Пример #2
0
        // GET: Admin/Record
        public ActionResult Index(Guid patientId)
        {
            ViewBag.Feature = "Thêm mới";
            ViewBag.Element = KeyElement;
            if (Request.Url != null)
            {
                ViewBag.BaseURL = Request.Url;
            }
            try
            {
                using (var workScope = new UnitOfWork(new PatientManagementDbContext()))
                {
                    var patient = workScope.Patients.FirstOrDefault(x => x.Id == patientId);
                    if (patient != null)
                    {
                        var record = workScope.Records.FirstOrDefault(x => x.Id == patient.RecordId);
                        if (record == null)
                        {
                            record = new Record
                            {
                                Id           = Guid.NewGuid(),
                                CreatedBy    = GetCurrentUser().FullName,
                                ModifiedBy   = GetCurrentUser().FullName,
                                CreatedDate  = DateTime.Now,
                                ModifiedDate = DateTime.Now,
                                Note         = "",
                                Result       = ""
                            };
                            patient.RecordId = record.Id;
                            workScope.Records.Add(record);
                            workScope.Complete();
                        }
                        ViewBag.Record  = record;
                        ViewBag.Patient = patient;

                        var doctors = workScope.Doctors.GetAll().ToList();
                        ViewBag.Doctors = new SelectList(doctors, "Id", "Name");

                        var faculties = workScope.Faculties.GetAll().ToList();
                        ViewBag.Faculties = new SelectList(faculties, "Id", "Name");

                        var lstStatus = StatusRecord.GetDic();
                        ViewBag.ListStatus = new SelectList(lstStatus, "Value", "Text");

                        var detailRecord = workScope.DetailRecords.Query(x => x.RecordId == record.Id).OrderByDescending(x => x.Process).ToList();
                        return(View(detailRecord));
                    }
                    else
                    {
                        return(RedirectToAction("Create", "Patient"));
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
 // need to do dynamically
 private static string ReplaceWithWorkItem(string rowHtml, StatusRecord workItem)
 {
     rowHtml = rowHtml.Replace("#Title#", workItem.TaskTitle);
     rowHtml = rowHtml.Replace("#ID#", workItem.TaskIdWithLink.Id.ToString());
     rowHtml = rowHtml.Replace("#IDLink#", workItem.TaskIdWithLink.Link);
     rowHtml = rowHtml.Replace("#AssignedTo#", workItem.AssignedTo);
     rowHtml = rowHtml.Replace("#Status#", workItem.TaskStatus.ToString());
     rowHtml = rowHtml.Replace("#CompletedWork#", workItem.CompletedWork.ToString());
     return(rowHtml);
 }
        public bool IsStatusTypeChangeValid(StatusRecord changedRecord, ModelStateDictionary modelState)
        {
            if (changedRecord == null)
            {
                throw new ArgumentNullException("changedRecord");
            }
            if (modelState == null)
            {
                throw new ArgumentNullException("modelState");
            }
            var statusRecords = this.statusRepository.Table.Where(c => c.Deleted == false).ToList();

            var statusNames = new Tuple <int, string>[] {
                new Tuple <int, string>(StatusRecord.NewStatus, "New"),
                new Tuple <int, string>(StatusRecord.OpenStatus, "In Progress"),
                new Tuple <int, string>(StatusRecord.DeferredStatus, "Deferred"),
                new Tuple <int, string>(StatusRecord.PendingInputStatus, "Pending input"),
                new Tuple <int, string>(StatusRecord.ClosedStatus, "Completed")
            };

            var oldRecord = statusRecords.FirstOrDefault(c => c.Id == changedRecord.Id);

            if (oldRecord != null)
            {
                statusRecords.Remove(oldRecord);
            }

            statusRecords.Add(changedRecord);

            var statusTypes = new[] { StatusRecord.NewStatus, StatusRecord.OpenStatus, StatusRecord.DeferredStatus, StatusRecord.PendingInputStatus, StatusRecord.ClosedStatus };

            foreach (var statusType in statusTypes)
            {
                var recordsWithThisStatusType = statusRecords.Where(c => c.StatusTypeId == statusType).ToList();

                if (recordsWithThisStatusType.Count > 1)
                {
                    modelState.AddModelError("StatusTypeId", "It is not allowed to have two status with the same StatusType");
                    return(false);
                }

                if (recordsWithThisStatusType.Count == 0)
                {
                    var statusName = statusNames.First(c => c.Item1 == statusType).Item2;
                    modelState.AddModelError("StatusTypeId", "It is not allowed to remove a basic StatusType:" + statusName);
                    return(false);
                }
            }

            return(true);
        }
Пример #5
0
        public int UpdateFrom5()
        {
            // status records
            var statusRecords = this.statusRepository.Table.OrderBy(c => c.Id).ToList();

            // rename open status to In Progress
            var openStatus = statusRecords.FirstOrDefault(c => c.StatusTypeId == StatusRecord.OpenStatus);

            if (openStatus != null)
            {
                openStatus.Name = "In Progress";
                this.statusRepository.Update(openStatus);
            }

            // rename Solved to Deferred
            var solvedStatus = statusRecords.FirstOrDefault(c => c.StatusTypeId == StatusRecord.DeferredStatus);

            if (solvedStatus != null)
            {
                solvedStatus.Name = "Deferred";
                this.statusRepository.Update(solvedStatus);
            }

            // rename Closed to Completed
            var closedStatus = statusRecords.FirstOrDefault(c => c.StatusTypeId == StatusRecord.ClosedStatus);

            if (closedStatus != null)
            {
                closedStatus.Name = "Completed";
                this.statusRepository.Update(closedStatus);
            }

            // pending input
            if (!statusRecords.Any(c => c.StatusTypeId == StatusRecord.PendingInputStatus))
            {
                StatusRecord pendingStatus = new StatusRecord
                {
                    StatusTypeId = StatusRecord.PendingInputStatus,
                    Name         = "Pending input",
                    OrderId      = 3,
                };
                this.statusRepository.Create(pendingStatus);
            }

            this.statusRepository.Flush();

            return(6);
        }
        public ActionResult CreateStatusPost(StatusViewModel model)
        {
            if (!this.services.Authorizer.Authorize(Permissions.BasicDataPermission))
            {
                return(new HttpUnauthorizedResult());
            }

            this.transactionManager.Demand();

            if (!this.ModelState.IsValid)
            {
                this.transactionManager.Cancel();
                return(this.View("CreateStatus", model));
            }

            // update status of old records
            var statusRecords = this.statusRepository.Table.ToList();

            statusRecords.Where(c => c.StatusTypeId == model.StatusTypeId && c.Id != model.StatusId).ToList().ForEach(c =>
            {
                c.StatusTypeId = null;
                this.statusRepository.Update(c);
            });

            StatusRecord status = new StatusRecord();

            status.Name         = model.Name;
            status.OrderId      = model.OrderId;
            status.StatusTypeId = model.StatusTypeId;

            if (!this.validationService.IsStatusTypeChangeValid(status, this.ModelState))
            {
                this.transactionManager.Cancel();
                return(this.View("CreateStatus", model));
            }

            this.statusRepository.Create(status);
            this.statusRepository.Flush();
            this.basicDataService.ClearCache();
            return(RedirectToAction("TicketStatusList"));
        }
Пример #7
0
        // TODO: Make this query configurable
        private async Task <List <StatusRecord> > MapQueryResultToStatusRecords(WorkItemQueryResult queryResult)
        {
            var StatusRecordlist = new List <StatusRecord>();

            var count = 1;

            foreach (WorkItemLink item in queryResult.WorkItemRelations)
            {
                if (item.Source != null)
                {
                    var workItemInstance   = this.witClient.GetWorkItemAsync(item.Target.Id).Result;
                    var parentItemInstance = this.witClient.GetWorkItemAsync(item.Source.Id).Result;

                    Enum.TryParse(workItemInstance.Fields["System.State"].ToString().Replace(" ", string.Empty), out CurrentStatus workItemStatus);

                    var record = new StatusRecord()
                    {
                        SerialNumber     = count++,
                        ParentIdWithLink = new IdWithLink()
                        {
                            Id   = item.Source.Id,
                            Link = this.hyperLinkService.GetWorkItemEditorUrl(item.Source.Id).ToString()
                        },
                        TaskIdWithLink = new IdWithLink()
                        {
                            Id   = item.Target.Id,
                            Link = this.hyperLinkService.GetWorkItemEditorUrl(item.Target.Id).ToString()
                        },
                        TaskTitle     = workItemInstance.Fields["System.Title"].ToString(),
                        TaskStatus    = workItemStatus,
                        AssignedTo    = ((IdentityRef)workItemInstance.Fields["System.AssignedTo"]).DisplayName,
                        ParentTitle   = parentItemInstance?.Fields["System.Title"]?.ToString(),
                        CompletedWork = workItemInstance.Fields.Keys.Contains("Microsoft.VSTS.Scheduling.CompletedWork") ? workItemInstance?.Fields["Microsoft.VSTS.Scheduling.CompletedWork"]?.ToString() : string.Empty
                    };

                    StatusRecordlist.Add(record);
                }
            }
            return(StatusRecordlist);
        }
Пример #8
0
        public async Task <DatabaseContainer> AddStatusRecordToUpdaterContainer(string servername, StatusRecord record)
        {
            var server = await _context.Servers.Where(s => s.Servername.Equals(servername))
                         .Include(s => s.UpdaterContainer).ThenInclude(c => c.StatusRecords).SingleOrDefaultAsync();

            if (server == null)
            {
                throw new ArgumentException("Server does not exist");
            }

            if (server.UpdaterContainer == null)
            {
                throw new NullReferenceException("Server does not have an updater container");
            }

            record.DatabaseContainer = server.UpdaterContainer;
            server.UpdaterContainer.StatusRecords.Add(record);
            await _context.SaveChangesAsync();

            return(server.UpdaterContainer);
        }
Пример #9
0
        public async Task AddStatusRecord(string servername, OverviewContainerData container)
        {
            var server = await _context.Servers.Where(s => s.Servername.Equals(servername))
                         .Include(s => s.UpdaterContainer)
                         .ThenInclude(c => c.StatusRecords)
                         .Include(s => s.Containers)
                         .ThenInclude(c => c.StatusRecords)
                         .SingleOrDefaultAsync();

            if (server == null)
            {
                throw new ArgumentException("Server does not exist");
            }

            var statusRecord = new StatusRecord
            {
                TimeOfRecordInsertion = DateTime.Now,
            };

            if (container.Health != null)
            {
                if (container.Health.ToLower().Contains("unhealthy"))
                {
                    statusRecord.Health = ContainerHealth.UnHealthy;
                }
                else
                {
                    statusRecord.Health = ContainerHealth.Healthy;
                }
            }

            if (container.Status.ToLower().Contains("up"))
            {
                statusRecord.Status = ContainerStatus.Up;
            }
            else
            {
                statusRecord.Status = ContainerStatus.Down;
            }

            if (ContainerIsUpdater(container.Image)) // Add the record to the updater container
            {
                statusRecord.DatabaseContainer = server.UpdaterContainer;
                server.UpdaterContainer.StatusRecords.Add(statusRecord);
                server.UpdaterContainer.ContainerId = container.Id;
            }
            else // Add it to the appropriate container
            {
                var databaseContainer = server.Containers.FirstOrDefault(c => c.ContainerId.Equals(container.Id));
                if (databaseContainer == null) // the server does not hold any records for this container yet
                {
                    databaseContainer = new DatabaseContainer {
                        ContainerId = container.Id
                    };
                    server.Containers.Add(databaseContainer);
                }

                statusRecord.DatabaseContainer = databaseContainer;
            }

            await _context.SaveChangesAsync();
        }