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); }
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); }
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); } }
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); } }
public void UpdateSageWorkOrder(SageWorkOrder model) { this._clients.All.UpdateSageWorkOrder(model); }
public void CreateWorkOrder(SageWorkOrder model) { this._clients.All.createWorkorder(model); }
public SageResponse <SageWorkOrder> EditWorkOrder(SageWorkOrder workOrder) { return(Edit(workOrder, EndPoints.EditWorkOrder)); }
public SageResponse <SageWorkOrder> AddWorkOrder(SageWorkOrder workOrder) { return(Add(workOrder, EndPoints.AddWorkOrder)); }
public void EditWorkOrder(SageWorkOrder workOrder) { var query = Queries.BuildEditWorkOrderQuery(workOrder); ExecuteQuery(timberlineServiceManagementConnectionString, query); }
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()); }
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()); }
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); }