private void FillVoiceAndNotes(ExcelWorksheet VoiceAndNotesSheet, ArcoOrder Orderdetail) { VoiceAndNotesSheet.Select(); Regex regEx = new Regex("{{.*?}}"); IEnumerable <ExcelRangeBase> _foundranges = VoiceAndNotesSheet.Cells.Where(fil => fil.Value != null).Where(fil => regEx.IsMatch(fil.Value.ToString())); Type _type = Orderdetail.VoiceNotesnPics.GetType(); foreach (ExcelRangeBase _foundrange in _foundranges) { String _membername = ((String)_foundrange.Value).Replace("{{", String.Empty).Replace("}}", String.Empty); try { _foundrange.Value = _type.GetProperty(_membername).GetValue(Orderdetail.VoiceNotesnPics, null); } catch (Exception ex) { _foundrange.Value = "Member Name not found"; } } regEx = new Regex("[[ImageList]]"); ExcelRangeBase _imgrange = VoiceAndNotesSheet.Cells.Where(fil => fil.Value != null).Where(fil => regEx.IsMatch(fil.Value.ToString())).FirstOrDefault(); if (_foundranges != null) { if (Orderdetail.VoiceNotesnPics.ImageAttachments.Count > 0) { int _imgcount = 1; String _imagelist = String.Empty; Orderdetail.VoiceNotesnPics .ImageAttachments .ForEach(img => { _imagelist = String.Concat(_imagelist, String.Format("{0}_Image_{1}.jpeg", Orderdetail.OrderFramework.SalesOrderNumber, _imgcount++), "\n"); }); _imgrange.Value = _imagelist; } else { _imgrange.Value = String.Empty; } } VoiceAndNotesSheet.Select("A1"); }
public void FillInboundAndPackaging(ExcelWorksheet InboundAndPackagingSheet, ArcoOrder Orderdetail) { InboundAndPackagingSheet.Select(); Regex regEx = new Regex("{{.*?}}"); IEnumerable <ExcelRangeBase> _foundranges = InboundAndPackagingSheet.Cells.Where(fil => fil.Value != null).Where(fil => regEx.IsMatch(fil.Value.ToString())); Type _type = Orderdetail.InboundnPackaging.GetType(); foreach (ExcelRangeBase _foundrange in _foundranges) { String _membername = ((String)_foundrange.Value).Replace("{{", String.Empty).Replace("}}", String.Empty); try { _foundrange.Value = _type.GetProperty(_membername).GetValue(Orderdetail.InboundnPackaging, null); } catch (Exception ex) { _foundrange.Value = "Member Name not found"; } } InboundAndPackagingSheet.Select("A1"); }
private void CreateExcelDocument(ArcoOrder OrderDetail, String FileName) { String _TemplateFileName = "ARCOeCardTemplateV3.xlsm"; String _TemplatePath = String.Format(@"{0}\{1}", AppDomain.CurrentDomain.GetData("DataDirectory").ToString(), _TemplateFileName); FileInfo _templatefileinfo = new FileInfo(_TemplatePath); FileInfo _targetfileinfo = new FileInfo(FileName); ExcelPackage _excel = new ExcelPackage(_targetfileinfo, _templatefileinfo); ExcelWorksheet _ordersheet = _excel.Workbook.Worksheets["OrderFramework"]; ExcelWorksheet _InboundAndPackagingSheet = _excel.Workbook.Worksheets["Inbound&Packaging"]; ExcelWorksheet _VoiceAndNotesSheet = _excel.Workbook.Worksheets["Voice&Notes"]; ExcelWorksheet _specandrepairsheet = _excel.Workbook.Worksheets["Specification&Repairs"]; FillOrderSheet(_ordersheet, OrderDetail); FillInboundAndPackaging(_InboundAndPackagingSheet, OrderDetail); _specandrepairsheet.Name = "Specification&Repairs-1"; if (OrderDetail.SpecificationRepairs.Count > 1) { for (int idx = 1; idx < OrderDetail.SpecificationRepairs.Count; idx++) { _excel.Workbook.Worksheets.Add(String.Format("Specification&Repairs-{0}", idx + 1), _excel.Workbook.Worksheets[String.Format("Specification&Repairs-{0}", idx)]); } } List <ExcelWorksheet> _specssheets = _excel.Workbook.Worksheets.Where(fil => fil.Name.StartsWith("Specification&Repairs-")).ToList(); int _specidx = 0; _specssheets.ForEach(item => { FillSpecsAndReapirs(item, OrderDetail.SpecificationRepairs[_specidx++]); }); FillVoiceAndNotes(_VoiceAndNotesSheet, OrderDetail); _excel.Workbook.Worksheets.MoveToEnd("Voice&Notes"); _ordersheet.Select(); _excel.Save(); }
public IHttpActionResult PostOrder(ArcoOrder order) { if (Prenotes.CheckPreNoteSubmit(order.OrderFramework.PrenoteId)) { return(Content(HttpStatusCode.Conflict, "Prenote already submitted")); } if (Prenotes.CheckPreNoteDelete(order.OrderFramework.PrenoteId)) { return(Content(HttpStatusCode.NotFound, "Prenote Deleted")); } ArcoOrder _orderclonewithoutimages = new ArcoOrder() { InboundnPackaging = order.InboundnPackaging, OrderFramework = order.OrderFramework, SpecificationRepairs = order.SpecificationRepairs, VoiceNotesnPics = new VoiceNotesnPics() { BookingCompletionDate = order.VoiceNotesnPics.BookingCompletionDate, ImageAttachments = new List <string>(), VoiceAndNotesComments = order.VoiceNotesnPics.VoiceAndNotesComments } }; Log.Info(String.Format("Request received from:{0}/{1} with the following detail\r\n{2}", HttpContext.Current.Request.UserHostAddress, HttpContext.Current.Request.UserHostName, JsonConvert.SerializeObject(_orderclonewithoutimages))); try { String _CurrentYearFolder = String.Format(@"{0}\{1}", ConfigurationManager.AppSettings["FileServerPath"].ToString(), DateTime.Now.Year.ToString()); if (!Directory.Exists(_CurrentYearFolder))//If Current year folder is not there create it { Directory.CreateDirectory(_CurrentYearFolder); Log.Info(String.Format("Year folder:{0} created", _CurrentYearFolder)); } String pattern = @"[\\\/\:\*\?\""\<\>\|]"; String _BillToCompanyWithLegalCharacters = Regex.Replace(order.OrderFramework.BilltoCompany, pattern, " ", RegexOptions.CultureInvariant); String _ClientFolder = String.Format(@"{0}\{1}-{2}", _CurrentYearFolder, _BillToCompanyWithLegalCharacters, order.OrderFramework.CustomerNumberBillTo); if (!Directory.Exists(_ClientFolder))//If Customer folder under Current year folder is not there create it { Directory.CreateDirectory(_ClientFolder); Log.Info(String.Format("Client folder:{0} created", _ClientFolder)); } String orderfolder = String.Format(@"{0}\{1}", _ClientFolder, order.OrderFramework.SalesOrderNumber); String filename = String.Format(@"{0}\{1}.json", orderfolder, order.OrderFramework.SalesOrderNumber); if (!Directory.Exists(orderfolder)) { Directory.CreateDirectory(orderfolder); CreateExcelDocument(order, String.Format(@"{0}\{1}.xlsm", orderfolder, order.OrderFramework.SalesOrderNumber)); Log.Info(String.Format(@"Data file:{0}\{1}.xlsm created", orderfolder, order.OrderFramework.SalesOrderNumber)); //int _imgcounter = 1; //order // .VoiceNotesnPics // .ImageAttachments // .ForEach(Attachment => // { // String _imagefilename = String.Format(@"{0}\{3}_Image_{1}.{2}", orderfolder, _imgcounter++, "jpeg", order.OrderFramework.SalesOrderNumber); // if (SaveImage(Attachment, _imagefilename)) // { // Log.Info(String.Format(@"Image {0} created", _imagefilename)); // } // else // {} // }); String Folderpath = String.Format(@"{0}\{1}-{2}\{3}", DateTime.Now.Year.ToString(), _BillToCompanyWithLegalCharacters, order.OrderFramework.CustomerNumberBillTo, order.OrderFramework.SalesOrderNumber); if (order.OrderFramework.PrenoteId > 0) { List <Attachment> Attachments = Prenotes.getAttachmentforPrenote(order.OrderFramework.PrenoteId); String _SourceFolder = String.Format(@"{0}", ConfigurationManager.AppSettings["AttachmentsPath"].ToString()); String _DestFolder = String.Format(@"{0}\{1}", orderfolder, "Prenote Attachments"); if (!Directory.Exists(_DestFolder)) { Directory.CreateDirectory(_DestFolder); Log.Info(String.Format("Prenote folder:{0} created", _DestFolder)); } foreach (Attachment item in Attachments) { var SourcefilePath = String.Format(@"{0}\{1}", _SourceFolder, item.ReferenceName + "." + item.Type); var DestfilePath = String.Format(@"{0}\{1}", _DestFolder, item.FileName + "." + item.Type); File.Copy(SourcefilePath, DestfilePath); } //String Folderpath = String.Format(@"{0}\{1}-{2}\{3}", DateTime.Now.Year.ToString(), // _BillToCompanyWithLegalCharacters, // order.OrderFramework.CustomerNumberBillTo, // order.OrderFramework.SalesOrderNumber); Prenotes.PrenoteBooked(order.OrderFramework.PrenoteId); Prenotes.MapSalesOrder1(order.OrderFramework, Folderpath); } else { Prenotes.MapSalesOrder(order.OrderFramework, Folderpath); } SmtpClient _emailclient = new SmtpClient(); MailMessage _message = new MailMessage(); // _message.From = new MailAddress(ConfigurationManager.AppSettings["EmailFrom"].ToString()); MailAddressCollection _to = new MailAddressCollection(); List <String> _toaddresses = new List <String>(ConfigurationManager.AppSettings["EmailTo"].Split(';')); _toaddresses.ForEach(_toaddress => { _message.To.Add(new MailAddress(_toaddress)); }); _message.Subject = String.Format("Plant: {3} {0} - {1} Order {2}", order.OrderFramework.BilltoCompany, order.OrderFramework.CustomerNumberBillTo, order.OrderFramework.SalesOrderNumber, order.OrderFramework.SiteLocation); _message.IsBodyHtml = true; _message.Body = String.Format("Please find below the detail in the following File server<BR><A HREF=\"{0}\">{0}</A>", orderfolder); //_emailclient.Send(_message); //Log.Info("Mail Sent."); return(Content(HttpStatusCode.OK, "SUCCESS")); } else { return(Content(HttpStatusCode.BadRequest, "Order already Exist")); } } catch (DbEntityValidationException ex) { foreach (var eve in ex.EntityValidationErrors) { Log.Error(String.Format("Request received from:{0}/{1}", HttpContext.Current.Request.UserHostAddress, HttpContext.Current.Request.UserHostName), ex); Log.Error(string.Format("Err @ UpdatePrenoteSystem: Method:{0}, Entity Type: {1}, Entity State: {2}", "PrenoteSalesOrder", eve.Entry.Entity.GetType().Name, eve.Entry.State)); foreach (var ve in eve.ValidationErrors) { Log.Error(string.Format("Err @ UpdatePrenoteSystem: Method:{0}, {1}, {2}", "PrenoteSalesOrder", ve.PropertyName, ve.ErrorMessage)); } } Log.Error(String.Format("Request received from:{0}/{1}", HttpContext.Current.Request.UserHostAddress, HttpContext.Current.Request.UserHostName), ex); return(Content(HttpStatusCode.InternalServerError, String.Format("{0}\r\n{1}", ex.Message, ex.StackTrace))); } catch (Exception ex) { Log.Error(String.Format("Request received from:{0}/{1}", HttpContext.Current.Request.UserHostAddress, HttpContext.Current.Request.UserHostName), ex); return(Content(HttpStatusCode.InternalServerError, String.Format("{0}\r\n{1}", ex.Message, ex.StackTrace))); } }