Exemplo n.º 1
0
        private void CreateWorkOrderEventOnChange(Incident workOrder, ars_technician technician, EventType eventType, KeyValuePair <int, string> status)
        {
            var eventTypecode = GetEventTypeValue(eventType);
            var previouscode  = GetEventTypeValue(eventType == EventType.CheckIn ? EventType.CheckOut : EventType.CheckIn);
            var events        = _context.ars_workordereventSet.Where(e => e.ars_WorkOrder.Id == workOrder.IncidentId);
            var incidentEvent =
                events.Where(e => e.ars_EventType.Value == previouscode.Key)
                .OrderByDescending(e => e.ars_DateTime)
                .FirstOrDefault();
            decimal?hours = 0;

            if (incidentEvent != null && eventType == EventType.CheckOut)
            {
                var diff = DateTime.UtcNow.Subtract(incidentEvent.ars_DateTime.Value);
                hours = diff.Hours + (decimal)diff.Minutes / 60;
            }

            var workorderevent = new ars_workorderevent
            {
                ars_name            = string.Format("{0} - Status Change", workOrder.Title),
                ars_DateTime        = DateTime.UtcNow,
                ars_WorkOrder       = workOrder.ToEntityReference(),
                ars_Technician      = technician.ToEntityReference(),
                ars_WorkOrderStatus = status.Value,
                ars_EventType       = new OptionSetValue
                {
                    Value = Convert.ToInt32(eventTypecode.Key)
                },
                ars_Hours = hours
            };

            _context.AddObject(workorderevent);
        }
Exemplo n.º 2
0
        private void ChangeWorkOrdersStatus(Incident workOrder, ars_technician technician, StatusCode statusCode, EventType eventType)
        {
            var status = GetStatusOptionSetValue(statusCode);

            workOrder.StatusCode = new OptionSetValue
            {
                Value = Convert.ToInt32(status.Key)
            };

            _context.UpdateObject(workOrder);

            CreateWorkOrderEventOnChange(workOrder, technician, eventType, status);
        }
Exemplo n.º 3
0
        private static void CreateWorkOrdersForToday()
        {
            ars_technician technician = _context.ars_technicianSet.First(t => t.EmailAddress == "*****@*****.**");
            Incident workOrder = _context.IncidentSet.First(t => t.Title == "Fix This Now!!");
            Service service = _context.ServiceSet.First(t => t.Name == "General Service");

            DateTime now = DateTime.UtcNow;

            _context.AddObject(new ServiceAppointment
            {
                ScheduledStart = now,
                ScheduledEnd = now.AddHours(2),
                ServiceId = service.ToEntityReference(),
                RegardingObjectId = workOrder.ToEntityReference(),
                ars_Technician = technician.ToEntityReference(),
                Subject = "WO-" + Random.Next(10000, 99999) + "-" + Random.GetRandomAlpahnumeric(6)
            });

            _context.SaveChanges();
        }