Example #1
0
        public static string BuildEditWorkOrderQuery(SageWorkOrder workOrder)
        {
            var query = "UPDATE WRKORDER SET ";

            var parameters = new Dictionary <string, string>();

            parameters.Add("ARCUST", workOrder.ARCustomer);
            parameters.Add("SERVSITENBR", workOrder.Location);
            parameters.Add("CALLTYPECODE", workOrder.CallType);
            if (workOrder.CallDate != null)
            {
                parameters.Add("CALLDATE", ((DateTime)workOrder.CallDate).ToString("yyyy-MM-dd"));
            }
            if (workOrder.CallTime != null)
            {
                parameters.Add("CALLTIME", ((DateTime)workOrder.CallTime).ToString("HH:mm:ss")
                               ?? ((DateTime)workOrder.CallTime).ToString("HH:mm:ss"));
            }
            parameters.Add("PROBLEMCODE", workOrder.Problem);
            parameters.Add("RATESHEETNBR", workOrder.RateSheet);
            parameters.Add("TECHNICIAN", workOrder.Employee);
            parameters.Add("CONTACT", workOrder.Contact);
            parameters.Add("SYSEQPNBR", workOrder.Equipment.ToString());

            if (workOrder.EstimatedRepairHours != 0)
            {
                parameters.Add("ESTREPAIRHRS", workOrder.EstimatedRepairHours.ToString());
            }
            parameters.Add("NOTTOEXCEED", workOrder.NottoExceed);
            parameters.Add("COMMENTS", workOrder.Comments);
            parameters.Add("CUSTOMERPO", workOrder.CustomerPO);
            parameters.Add("PERMISSIONCODE", workOrder.PermissionCode);
            parameters.Add("PAYMETHOD", workOrder.PayMethod);
            parameters.Add("JCJOB", workOrder.JCJob);
            if (workOrder.Status == "Open")
            {
                parameters.Add("STATUS", "0");
            }
            if (workOrder.Status == "Closed")
            {
                parameters.Add("STATUS", "3");
            }

            foreach (var parameter in parameters)
            {
                if (parameter.Value != string.Empty && parameter.Value != null)
                {
                    query += string.Format("{0} = '{1}', ", parameter.Key, parameter.Value.Sanitize());
                }
            }

            query += string.Format("WHERE WRKORDNBR = '{0}';", workOrder.WorkOrder);
            query  = query.Replace(", WHERE", " WHERE");

            return(query);
        }
Example #2
0
        private Image AddWaterMark(Image image, SageWorkOrder workOrder, long number)
        {
            var    watermarkImage = Image.FromStream(_storageProvider.GetFile(Path.Combine(_urlToFolderPhotoWorkOrders, "watermark.png")).OpenRead());
            var    newWidth       = image.Width / 7;
            var    newHeight      = newWidth * watermarkImage.Height / watermarkImage.Width;
            var    margin         = newWidth / 10;
            float  opacity        = (float)0.5;
            int    fontSize       = Convert.ToInt32(newHeight / 7);
            Stream fontStream     = _storageProvider.GetFile(Path.Combine(_urlToFolderFonts, "OpenSans-Bold.ttf")).OpenRead();
            PrivateFontCollection fonts;
            FontFamily            family = LoadFontFamily(fontStream, out fonts);
            Font theFont = new Font(family, fontSize);

            watermarkImage = ResizeImage(watermarkImage, new Size(newWidth, newHeight));
            // watermarkImage = ChangeOpacity(watermarkImage, opacity);

            using (var graphicsHandle = Graphics.FromImage(image))
                using (TextureBrush watermarkBrush = new TextureBrush(watermarkImage))
                {
                    graphicsHandle.InterpolationMode = InterpolationMode.HighQualityBicubic;
                    int x = (margin);
                    int y = (image.Height - newHeight);
                    watermarkBrush.TranslateTransform(x, y);
                    graphicsHandle.FillRectangle(watermarkBrush, new Rectangle(new Point(x, y), new Size(newWidth, newHeight)));

                    using (var arialFont = theFont)
                    {
                        x = (image.Width - newWidth - margin);
                        y = (image.Height - newHeight - 4);
                        RectangleF   rectF1       = new RectangleF(x, y, newWidth, newHeight);
                        SolidBrush   brush        = new SolidBrush(Color.FromArgb(255, Color.White));
                        StringFormat stringFormat = new StringFormat()
                        {
                            Alignment     = StringAlignment.Center,
                            LineAlignment = StringAlignment.Center
                        };

                        graphicsHandle.FillRectangle(brush, Rectangle.Round(rectF1));
                        var pen = new Pen(Color.Black, 0.1f);
                        graphicsHandle.DrawRectangle(pen, Rectangle.Round(rectF1));
                        pen.Color = Color.Red;
                        RectangleF rectInside = new RectangleF(x + 2, y + 2, newWidth - 4, newHeight - 4);
                        graphicsHandle.DrawRectangle(pen, Rectangle.Round(rectInside));
                        var woDate = "";
                        if (workOrder.DateEntered != null)
                        {
                            woDate = workOrder.DateEntered.Value.Date.ToShortDateString();
                        }
                        graphicsHandle.DrawString($"WORK ORDER #{workOrder.WorkOrder}\r\n{woDate}\r\nIMAGE #{number}", arialFont, Brushes.Black, x + newWidth / 2, y + newHeight / 2, stringFormat);
                    }
                }
            return(image);
        }
Example #3
0
        public SageResponse <SageWorkOrder> AddWorkOrder(SageWorkOrder workOrder)
        {
            try
            {
                var properties = new Dictionary <string, string>();

                properties.Add("ARCustomer", workOrder.ARCustomer ?? string.Empty);
                properties.Add("Location", workOrder.Location ?? string.Empty);
                properties.Add("CallType", workOrder.CallType ?? string.Empty);
                properties.Add("CallDate", workOrder.CallDate.ToString() ?? string.Empty);
                properties.Add("Problem", workOrder.Problem ?? string.Empty);
                properties.Add("RateSheet", workOrder.RateSheet ?? string.Empty);
                properties.Add("Employee", workOrder.Employee ?? string.Empty);
                properties.Add("Equipment", workOrder.Equipment.ToString() ?? string.Empty);
                properties.Add("EstimatedRepairHours", workOrder.EstimatedRepairHours.ToString() ?? string.Empty);
                properties.Add("NottoExceed", workOrder.NottoExceed ?? string.Empty);
                properties.Add("Comments", workOrder.Comments ?? string.Empty);
                properties.Add("CustomerPO", workOrder.CustomerPO ?? string.Empty);
                properties.Add("Contact", workOrder.Contact ?? string.Empty);
                properties.Add("PermissionCode", workOrder.PermissionCode ?? string.Empty);
                properties.Add("PayMethod", workOrder.PayMethod ?? string.Empty);
                properties.Add("JCJob", workOrder.JCJob ?? string.Empty);

                var resultProperties = new Dictionary <string, string>();
                foreach (var property in properties)
                {
                    if (!string.IsNullOrEmpty(property.Value))
                    {
                        resultProperties.Add(property.Key, property.Value.Sanitize());
                    }
                }

                var resultWorkOrder  = this.serviceManager.WorkOrders(resultProperties).SingleOrDefault();
                var resultAssignment = new SageAssignment();
                if (resultWorkOrder != null)
                {
                    resultAssignment = this.serviceManager.GetAssignmentByWorkOrderId(resultWorkOrder.WorkOrder.ToString()).SingleOrDefault();
                }

                var result = new SageResponse <SageWorkOrder> {
                    IsSucceed = true, Entity = resultWorkOrder, RelatedAssignment = resultAssignment
                };
                return(result);
            }
            catch (ResponseException exception)
            {
                var result = new SageResponse <SageWorkOrder> {
                    IsSucceed = false, ErrorMassage = exception.Error.Message
                };
                return(result);
            }
        }
Example #4
0
 public SageResponse <SageWorkOrder> EditWorkOrder(SageWorkOrder workOrder)
 {
     try
     {
         serviceOdbc.EditWorkOrder(workOrder);
         var result = new SageResponse <SageWorkOrder>
         {
             IsSucceed = true,
             Entity    = serviceManager.WorkOrders(workOrder.WorkOrder.ToString()).SingleOrDefault()
         };
         return(result);
     }
     catch (ResponseException exception)
     {
         var result = new SageResponse <SageWorkOrder> {
             IsSucceed = false, ErrorMassage = exception.Error.Message
         };
         return(result);
     }
 }
Example #5
0
 public void UpdateSageWorkOrder(SageWorkOrder model)
 {
     this._clients.All.UpdateSageWorkOrder(model);
 }
Example #6
0
 public void CreateWorkOrder(SageWorkOrder model)
 {
     this._clients.All.createWorkorder(model);
 }
Example #7
0
 public SageResponse <SageWorkOrder> EditWorkOrder(SageWorkOrder workOrder)
 {
     return(Edit(workOrder, EndPoints.EditWorkOrder));
 }
Example #8
0
 public SageResponse <SageWorkOrder> AddWorkOrder(SageWorkOrder workOrder)
 {
     return(Add(workOrder, EndPoints.AddWorkOrder));
 }
Example #9
0
        public void EditWorkOrder(SageWorkOrder workOrder)
        {
            var query = Queries.BuildEditWorkOrderQuery(workOrder);

            ExecuteQuery(timberlineServiceManagementConnectionString, query);
        }
Example #10
0
        public ActionResult CreateWorkOrder(WorkOrderModel model)
        {
            _log.InfoFormat("Method: CreateWorkOrder. Model ID {0}", model.Id);
            if (string.IsNullOrEmpty(model.Calltype))
            {
                return(Error("Call Type is required"));
            }

            var workorder = new SageWorkOrder()
            {
                ARCustomer           = model.Customer,
                Location             = model.Location,
                CallType             = model.Calltype,
                CallDate             = model.Calldate.GetLocalDate(),
                Problem              = model.Problem,
                RateSheet            = model.Ratesheet,
                Employee             = model.Emploee.ToString(),
                EstimatedRepairHours = Convert.ToDecimal(model.Estimatehours),
                NottoExceed          = model.Nottoexceed,
                Comments             = model.Locationcomments,
                CustomerPO           = model.Customerpo,
                PermissionCode       = model.Permissiocode,
                PayMethod            = model.Paymentmethods,
                JCJob     = model.JCJob,
                Contact   = model.Contact,
                Equipment = model.Equipment,
            };

            var result = _sageApiProxy.AddWorkOrder(workorder);

            result.Entity.LocationNumber = long.Parse(model.Location);

            if (!result.IsSucceed)
            {
                _log.ErrorFormat("Was not able to save workorder to sage. !result.IsSucceed");
                return(Error(result.ErrorMassage));
            }

            var assignment = result.RelatedAssignment;

            assignment.IsValid = true;
            if (model.Emploee == 0)
            {
                result.Entity.AssignmentId = assignment.Assignment;
                _repository.Add(assignment);
            }
            else
            {
                var employee = _repository.SearchFor <SageEmployee>(x => x.Employee == model.Emploee).SingleOrDefault();
                assignment.EmployeeId = employee?.Employee ?? 0;
                assignment.Start      = (model.AssignmentDate.Date).Add((model.AssignmentTime).TimeOfDay).ToString();
                assignment.End        = model.AssignmentDate.Date.Add((model.AssignmentTime).TimeOfDay).AddHours(assignment.EstimatedRepairHours.AsDouble() == 0 ? 1 : assignment.EstimatedRepairHours.AsDouble()).ToString();
                assignment.Color      = employee?.Color ?? "";
                assignment.Customer   = result.Entity.ARCustomer;
                assignment.Location   = result.Entity.Location;

                var locations    = _repository.GetAll <SageLocation>().ToArray();
                var itemLocation = locations.FirstOrDefault(l => l.Name == result.Entity.Location);
                result.Entity.ScheduleDate = assignment.ScheduleDate;
                result.Entity.Latitude     = itemLocation.Latitude;
                result.Entity.Longitude    = itemLocation.Longitude;

                _repository.Add(assignment);
                _hub.CreateAssignment(new MapViewModel()
                {
                    WorkOrder   = result.Entity,
                    DateEntered = assignment.ScheduleDate,
                    Employee    = employee?.Employee ?? 0,
                    Color       = employee?.Color ?? ""
                });
            }

            _repository.Add(result.Entity);
            _log.InfoFormat("Workorder added to repository. ID: {0}, Name: {1}", workorder.Id, workorder.Name);
            _notification.SendNotification(string.Format("{0} was created", workorder.WorkOrder));
            return(Success());
        }
Example #11
0
        public ActionResult SaveWorkOrder(WorkOrderModel model)
        {
            _log.InfoFormat("Method: SaveWorkOrder. Model ID {0}", model.Id);

            if (model.Emploee == 0)
            {
                return(Error("Employee is required"));
            }
            if (model.Location == null)
            {
                return(Error("Location is required"));
            }
            if (model.Problem == null)
            {
                return(Error("Problem is required"));
            }


            var workorder = new SageWorkOrder()
            {
                ARCustomer           = model.Customer,
                Location             = model.Location,
                CallType             = model.Calltype,
                CallDate             = model.Calldate.GetLocalDate(),
                Problem              = model.Problem,
                RateSheet            = model.Ratesheet,
                Employee             = model.Emploee.ToString(),
                EstimatedRepairHours = Convert.ToDecimal(model.Estimatehours),
                NottoExceed          = model.Nottoexceed,
                Comments             = model.Locationcomments,
                CustomerPO           = model.Customerpo,
                PermissionCode       = model.Permissiocode,
                PayMethod            = model.Paymentmethods,
                WorkOrder            = model.WorkOrder,
                Id        = model.Id,
                Status    = WorkOrderStatus.ById(model.Status),
                JCJob     = model.JCJob,
                Contact   = model.Contact,
                Equipment = model.Equipment
            };

            var workOrderResult = _sageApiProxy.EditWorkOrder(workorder);

            workOrderResult.Entity.LocationNumber = long.Parse(model.Location);
            if (!workOrderResult.IsSucceed)
            {
                _log.ErrorFormat("Was not able to update workorder to sage. !result.IsSucceed");
                return(Error("Was not able to update workorder to sage"));
            }

            if (model.Emploee != 0)
            {
                var assignmentDb     = _repository.SearchFor <SageAssignment>(x => x.WorkOrder == model.WorkOrder).Single();
                var editedAssignment = new AssignmentViewModel();
                editedAssignment.Employee             = model.Emploee;
                editedAssignment.EndDate              = model.AssignmentDate.Date.Add((model.AssignmentTime).TimeOfDay).AddHours(assignmentDb.EstimatedRepairHours.AsDouble() == 0 ? 1 : assignmentDb.EstimatedRepairHours.AsDouble());
                editedAssignment.EstimatedRepairHours = workorder.EstimatedRepairHours.ToString();
                editedAssignment.Id           = assignmentDb.Id;
                editedAssignment.ScheduleDate = model.AssignmentDate.Date.Add((model.AssignmentTime).TimeOfDay);
                editedAssignment.WorkOrder    = assignmentDb.WorkOrder;
                _scheduleService.CerateAssignment(editedAssignment);

                var locations    = _repository.GetAll <SageLocation>().ToArray();
                var itemLocation = locations.FirstOrDefault(l => l.Name == workOrderResult.Entity.Location);
                workOrderResult.Entity.ScheduleDate = model.AssignmentDate.Date.Add((model.AssignmentTime).TimeOfDay);
                workOrderResult.Entity.Latitude     = itemLocation.Latitude;
                workOrderResult.Entity.Longitude    = itemLocation.Longitude;
            }

            this.ResolveWorkOrderItems(model);
            this.ResolveWorkOrderNotes(model);

            workOrderResult.Entity.Status         = WorkOrderStatus.ById(model.Status);
            workOrderResult.Entity.Id             = workorder.Id;
            workOrderResult.Entity.IsValid        = true;
            workOrderResult.Entity.WorkOrderItems = _sageApiProxy.GetWorkorderItemsByWorkOrderId(workorder.WorkOrder).Entities;
            workOrderResult.Entity.WorkNotes      = this._sageApiProxy.GetNotes(workorder.WorkOrder).Entities;
            _repository.Update(workOrderResult.Entity);

            _log.InfoFormat("Repository update workorder. Name {0}, ID {1}", workorder.Name, workorder.Id);
            _hub.UpdateWorkOrder(model);
            if (model.Status == WorkOrderStatus.WorkCompleteId)
            {
                _hub.ShowAlert(new SweetAlertModel()
                {
                    Message = $"Workorder #{model.WorkOrder} closed",
                    Title   = "Workorder completed",
                    Type    = "success"
                });
            }
            return(Success());
        }
Example #12
0
        private string SavePhotoForWorkOrder(HttpPostedFileBase file, string path, string userId, int MaxSize, SageWorkOrder workOrder, long number)
        {
            if (file == null)
            {
                return(string.Empty);
            }
            Image image = Image.FromStream(file.InputStream, true);

            if (!this.ValidateImage(image))
            {
                return(string.Empty);
            }
            //string name;
            string ext = _knownImageFormats[ImageFormat.Jpeg];

            //if (_knownImageFormats.TryGetValue(image.RawFormat, out name))
            //    ext = name.ToLower();
            image = AddWaterMark(image, workOrder, number);
            image = ResizeImage(image, new Size(MaxSize, MaxSize));
            if (!_storageProvider.IsFolderExits(path))
            {
                _storageProvider.TryCreateFolder(path);
            }
            var newPath = userId + "." + ext;

            using (var ms = new MemoryStream())
            {
                var resultPath = Path.Combine(path, newPath);
                image.Save(ms, ImageFormat.Jpeg);
                if (_storageProvider.IsFileExists(resultPath))
                {
                    _storageProvider.DeleteFile(resultPath);
                }
                _storageProvider.CreateFile(resultPath, ms.ToArray());
            }

            return(newPath);
        }