public IHttpActionResult Post([FromBody] AddNewPositionModel model) { var term = termManager.GetById(model.termId); ClientTermViewModel result = null; var product = productManager.GetById(model.productId); var user = userManager.GetByLogin(model.Login); if (user != null && user.Token == model.Token && product != null && term != null) { var newPosition = new Positions() { Amount = 1, //TODO Description = product.Name, ProductId = product.Id, Price = product.Price, OrderId = term.OrderId, }; positionsManager.AddEntity(newPosition); var newTermPosition = new TermPositions() { TermId = term.Id, Amount = 1, //TODO Positions = newPosition, TermPositionMaterialRsps = new List <TermPositionMaterialRsp>() }; term.TermPositions.Add(newTermPosition); //add linked material to position foreach (var material in product.ProductMaterialRsps.Where(o => !o.DeleteDate.HasValue)) { newTermPosition.TermPositionMaterialRsps.Add(new TermPositionMaterialRsp() { Amount = material.Amount, MaterialId = material.MaterialId, TermPositions = newTermPosition }); } positionsManager.SaveChanges(); if (term != null) { result = TermViewModelHelper.ToModel(term, true, false); } return(Ok(result)); } return(BadRequest()); }
public IHttpActionResult Post([FromBody] GetTermModel model) { var term = termManager.GetById(model.termId); ClientTermViewModel result = null; if (term != null) { result = TermViewModelHelper.ToModel(term, model.withPositions, model.withMaterials); } return(Ok(result)); }
public IHttpActionResult Post([FromBody] GetTermModel model) { var term = termManager.GetById(model.termId); var result = new List <ClientTermPositionViewModel>(); if (term != null) { result = TermViewModelHelper.PositionModels(term); } return(Ok(result)); }
public IHttpActionResult Post([FromBody] ClientTermSearchModel model) { var user = userManager.GetByLogin(model.userLogin); var result = new List <ClientTermViewModel>(); var missingMaterials = new List <ClientTermMaterialViewModel>(); if (user != null && user.EmployeeId.HasValue) { var date = DateTime.Now.Date; if (model.termsForTommorow) { date = date.AddDays(1); } var terms = termManager.GetEntities(o => o.TermEmployees.Any(e => !e.DeleteDate.HasValue && e.EmployeeId == user.EmployeeId.Value) && o.Date.Date == date); result = terms.Select(term => TermViewModelHelper.ToModel(term, false, true)).OrderBy(o => o.FromDate).ToList(); var auto = terms.Select(o => o.Autos).FirstOrDefault(); //todo? var materials = result.SelectMany(o => o.Materials.Where(m => !m.Amount.HasValue)); foreach (var materialGroup in materials.GroupBy(o => o.MaterialId)) { var neededAmount = materialGroup.Where(o => o.PlannedAmount.HasValue).Sum(o => o.PlannedAmount.Value); var isAmount = (double)auto.AutoMaterialRsps.Where(o => o.MaterialId == materialGroup.Key).Sum(o => o.Amount); if (neededAmount > isAmount) { missingMaterials.Add(new ClientTermMaterialViewModel() { Id = materialGroup.Key, Description = materials.FirstOrDefault(o => o.MaterialId == materialGroup.Key).Description, Number = materials.FirstOrDefault(o => o.MaterialId == materialGroup.Key).Number, Amount = neededAmount - isAmount, }); } } } return(Ok(new { terms = result, missingMaterials = missingMaterials })); }
public IHttpActionResult Post([FromBody] AddNewMaterialModel model) { var term = termManager.GetById(model.termId); ClientTermViewModel result = null; var material = materialManager.GetById(model.materialId); var user = userManager.GetByLogin(model.Login); if (user != null && user.Token == model.Token && material != null && term != null) { var newPosition = new Positions() { Amount = 1, //TODO Description = material.Name, MaterialId = material.Id, Price = material.Price, OrderId = term.OrderId, IsMaterialPosition = true, TermId = term.Id, CreateDate = DateTime.Now, ChangeDate = DateTime.Now, }; positionsManager.AddEntity(newPosition); positionsManager.SaveChanges(); if (term != null) { result = TermViewModelHelper.ToModel(term, false, true); } return(Ok(result)); } return(BadRequest()); }
public IHttpActionResult Post([FromBody] ChangeStateTermModel model) { var term = termManager.GetById(model.termId); ClientTermViewModel result = null; var user = userManager.GetByLogin(model.Login); if (user != null && user.Token == model.Token && term != null) { term.User = user; term.Status = model.status; switch ((TermStatusTypes)model.status) { case TermStatusTypes.BeginTrip: term.BeginTripFromOffice = model.BeginTripFromOffice; term.BeginTrip = DateTime.Now; break; case TermStatusTypes.EndTrip: term.EndTrip = DateTime.Now; break; case TermStatusTypes.BeginWork: term.BeginWork = DateTime.Now; break; case TermStatusTypes.CheckPositions: var termPositions = term.TermPositions.Where(o => !o.DeleteDate.HasValue).ToList(); foreach (var position in model.Positions) { var termPosition = termPositions.FirstOrDefault(o => o.Id == position.Id); termPosition.ProccessedAmount = position.ProccessedAmount; } termManager.SaveChanges(); break; case TermStatusTypes.CheckMaterials: var termMaterials = term.TermPositions.Where(o => !o.DeleteDate.HasValue).SelectMany(o => o.TermPositionMaterialRsps).ToList(); foreach (var material in model.Materials) { var termMaterial = termMaterials.FirstOrDefault(o => o.Id == material.Id); if (termMaterial != null) { termMaterial.Amount = material.Amount; } } var materialPositions = term.Positions.Where(o => !o.DeleteDate.HasValue).ToList(); foreach (var material in model.Materials) { var position = materialPositions.FirstOrDefault(o => o.Id == material.Id); if (position != null && material.Amount.HasValue) { position.Amount = material.Amount.Value; } } termManager.SaveChanges(); break; case TermStatusTypes.EndWork: term.EndWork = DateTime.Now; var dataDirectory = Path.Combine(HttpRuntime.AppDomainAppPath, "App_Data"); var path = Path.Combine(dataDirectory, Contracts.Configuration.DeliveryNoteFileName); if (!model.sendDeliveryNotePerEmail) { var signature = deliveryNoteSignaturesManager.GetEntities(o => o.TermId == model.termId).FirstOrDefault(); if (signature != null) { signature.Signature = model.signature; } else { deliveryNoteSignaturesManager.AddEntity(new DeliveryNoteSignatures() { TermId = model.termId, Signature = model.signature, }); } deliveryNoteSignaturesManager.SaveChanges(); } termMaterials = term.TermPositions.Where(o => !o.DeleteDate.HasValue). SelectMany(o => o.TermPositionMaterialRsps.Where(t => !t.DeleteDate.HasValue && t.Amount.HasValue)).ToList(); foreach (var termMaterial in termMaterials) { AutoMaterialHelper.CalculateUsedMaterial(termMaterial.Amount.Value, null, termMaterial); } termManager.SaveChanges(); var stream = printerManager.PrepareDeliveryNotePrintData(term.Id, path, termManager); var fileName = String.Format("Lieferscheine_{0}_{1}_{2}_{3}.pdf", term.Id, DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day); var directory = Path.Combine(HttpRuntime.AppDomainAppPath, "Lieferscheine"); var filePath = Path.Combine(directory, fileName); if (!Directory.Exists(directory)) { Directory.CreateDirectory(directory); } using (var fileStream = new FileStream(filePath, FileMode.Create)) { stream.WriteTo(fileStream); term.DeliveryNoteFileName = fileName; termManager.SaveChanges(); var attachments = new List <Attachment>(); stream.Position = 0; attachments.Add(new Attachment(stream, fileName)); if (model.sendDeliveryNotePerEmail) { SendMail(NotificationServerConfigSection.Instance.SmtpServer, NotificationServerConfigSection.Instance.SmtpServerAccountName, NotificationServerConfigSection.Instance.SmtpServerAccountPassword, term.Orders.Customers.Email, String.Format("Lieferschein {0}", DateTime.Now.ToShortDateString()), String.Format("<p>Sehr geehrte {0},</p><p>anbei der Lieferschein vom {1}.</p><p>Mit freundlichen Grüßen,</p><p>{2}</p>", term.Orders.Customers.Name, DateTime.Now.ToShortDateString(), "Firma Zierer Gebäude & Systemtechnik"), NotificationServerConfigSection.Instance.SmtpServerPort, NotificationServerConfigSection.Instance.EnableSsl, (SmtpDeliveryMethod)NotificationServerConfigSection.Instance.SmtpDeliveryMethod, true, attachments); } } break; case TermStatusTypes.BeginReturnTrip: term.BeginReturnTrip = DateTime.Now; break; case TermStatusTypes.EndReturnTrip: term.EndReturnTrip = DateTime.Now; break; } termManager.SaveChanges(); if (term != null) { result = TermViewModelHelper.ToModel(term, model.withPositions, model.withMaterials); } return(Ok(result)); } return(BadRequest()); }