//using System; //using System.Collections.Generic; //using System.Linq; //using System.Text; //using System.Threading.Tasks; //using CAPI.Custom.Data; //using CAPI.Custom.Entities; //using framework_business; //namespace CAPI.Custom //{ // public class QuoteManager // { // QuotesContext db = new QuotesContext(); // #region Grid // public IQueryable GetGridItems() // { // return db.vQuoteGridItems; // } // public vQuoteGridItem GetGridItem(int itemId) // { // return db.vQuoteGridItems.SingleOrDefault(p => p.itemID == itemId); // } // #endregion // #region Quote Methods / CRUD // public vQuote Get(int itemId) // { // return db.vQuotes.SingleOrDefault(p => p.itemID == itemId); // } // public Quote Create(int userId, IQuote quote) // { // var tquote = quote as Quote; // var setup = db.Setup; // var user = db.Users.Find(userId); // int invoiceNumber = db.GetQuoteInvoiceNoSales(); // string quoteNumber = GetQuoteNumberByInvoiceNumber(invoiceNumber); // quote.None_QuoteInformation_QuoteLastUpdated = BusinessUtils.FormatDateToString(DateTime.Now); // quote.None_QuoteInformation_QuoteUpdatedBy = user.userDisplay; // quote.QuoteInformation_QuoteNumber = quoteNumber; // // save quote to get itemID // db.Quotes.Add(tquote); // db.SaveChanges(userId); // Sale salesQuote = new Sale // { // accountNo = quote.QuoteCustomerDetails_QuoteCustomerDetails_CustomerCode, // comments = quote.QuoteFinal_QuoteFinalItems_QuoteFinalItemsNotes, // dateOfCapture = DateTime.Now, // dateOfService = quote.None_QuoteInformation_QuoteDate, // invoiceNo = invoiceNumber, // itemType = "QT", // isVisible = true, // name = quote.QuoteInformation_CustomerTradingName, // postalAddress = quote.QuoteCustomerDetails_QuoteCustomerDetails_CustomerPostalAddress, // statusId = (int)pNums.SalesSatus.Draft, // surfaceItemId = quote.itemID, // surname = quote.None_QuoteInformation_ContactName, // vatNum = quote.QuoteCustomerDetails_QuoteCustomerDetails_CustomerVATNumber, // email = quote.QuoteCustomerDetails_QuoteCustomerDetails_QuoteContactEmail, // }; // SalesExtraNote extraNote = new SalesExtraNote // { // note = quote.QuoteFinal_QuoteFinalItems_QuoteFinalItemsNotes, // type = pNums.DocumentType.Quote.GetHashCode(), // number = salesQuote.invoiceNo, // dateSaved = DateTime.Now, // }; // db.Sales.Add(salesQuote); // db.SalesExtraNotes.Add(extraNote); // db.SaveChanges(userId); // return tquote; // } // public IQuote Update(int userId, IQuote quote) // { // quote = BusinessUtils.Update(userId, quote as Quote); // var salesQuote = db.Sales.FirstOrDefault(p => p.surfaceItemId == quote.itemID); // if (salesQuote.IsNotNull()) // { // salesQuote.postalAddress = quote.QuoteCustomerDetails_QuoteCustomerDetails_CustomerPostalAddress; // salesQuote.accountNo = quote.QuoteCustomerDetails_QuoteCustomerDetails_CustomerCode; // salesQuote.name = quote.QuoteInformation_CustomerTradingName; // salesQuote.surname = quote.None_QuoteInformation_ContactName; // salesQuote.comments = quote.QuoteFinal_QuoteFinalItems_QuoteFinalItemsNotes; // var extraNote = db.SalesExtraNotes.FirstOrDefault(p => p.number == salesQuote.invoiceNo); // if (extraNote.IsNotNull()) // { // extraNote.note = quote.QuoteFinal_QuoteFinalItems_QuoteFinalItemsNotes; // extraNote.dateSaved = DateTime.Now; // } // db.SaveChanges(); // } // return quote; // } // public int Delete(int userId, int quoteId) // { // var quote = db.Quotes.FirstOrDefault(p => p.itemID == quoteId); // // exit if quoteId does not exist // if (quote.IsNull()) return 0; // // gather all quote related information // var buyoutSuppliers = db.QuoteBuyoutSuppliers.Where(p => quoteId == p.ParentSurfaceItemId); // var buyoutSupplierIds = buyoutSuppliers.Select(p => p.itemID).ToArray(); // var buyoutItems = db.QuoteBuyoutItems.Where(p => buyoutSupplierIds.Contains(p.ParentSurfaceItemId.Value)); // var enquiryItems = db.QuoteEnquiryItems.Where(p => quoteId == p.ParentSurfaceItemId); // var requestItems = db.QuoteRequestItems.Where(p => quoteId == p.ParentSurfaceItemId); // var quoteItems = db.QuoteItems.Where(p => quoteId == p.ParentSurfaceItemId); // var finalItems = db.QuoteItemsFinal.Where(p => quoteId == p.ParentSurfaceItemId); // // remove collections that have items // if (finalItems.Any()) db.QuoteItemsFinal.RemoveRange(finalItems); // if (buyoutItems.Any()) db.QuoteBuyoutItems.RemoveRange(buyoutItems); // if (buyoutSuppliers.Any()) db.QuoteBuyoutSuppliers.RemoveRange(buyoutSuppliers); // if (quoteItems.Any()) db.QuoteItems.RemoveRange(quoteItems); // if (requestItems.Any()) db.QuoteRequestItems.RemoveRange(requestItems); // if (enquiryItems.Any()) db.QuoteEnquiryItems.RemoveRange(enquiryItems); // // remove sales information // var sale = db.Sales.FirstOrDefault(p => p.surfaceItemId == quoteId); // if (sale.IsNotNull()) // { // var extraNote = db.SalesExtraNotes.FirstOrDefault(p => p.number == sale.invoiceNo); // if (extraNote.IsNotNull()) // { // db.SalesExtraNotes.Remove(extraNote); // } // db.Sales.Remove(sale); // } // // remove quote // db.Quotes.Remove(quote); // return db.SaveChanges(userId); // } // #endregion // #region Child Collections // public IQueryable GetEnquiryItems(int quoteId) // { // return db.QuoteEnquiryItems // .Where(p => // p.isActive.Value // && p.ParentSurfaceItemId == quoteId // ) // .OrderBy(p => p.QuoteEnquiryItems_QuoteEnquiryItems_Sequence.Value); // } // public IQueryable GetRequestItems(int quoteId) // { // return db.QuoteRequestItems // .Where(p => // p.isActive.Value // && p.ParentSurfaceItemId == quoteId // ) // .OrderBy(p => p.QuoteRequestItems_QuoteRequestItems_QuoteRequestItemsItemSequence); // } // public IQueryable GetItems(int userId, int quoteId) // { // // TODO: All this should be managed when processing Enquiry Items // List quoteItems = new List(); // db.QuotesItems_RemoveMatchingSurplusWarehouseQuoteItems(userId, quoteId); // var quote = db.vQuotes.Where(p => p.itemID == quoteId) // .Select(p => new // { // IsFinalized = p.IsFinalized.HasValue ? p.IsFinalized.Value : false // }) // .SingleOrDefault(); // var sortedMasterNumbers = db.vQuoteRequestItems // .Where(p => p.ParentSurfaceItemId == quoteId) // .OrderBy(p => p.QuoteRequestItems_QuoteRequestItems_QuoteRequestItemsItemSequence) // .Select(p => p.QuoteRequestItems_QuoteRequestItems_QuoteRequestItemsMasterNumber) // .ToArray(); // quoteItems = db.vQuoteItems // .Where(p => p.ParentSurfaceItemId == quoteId) // .ToList(); // if (!quote.IsFinalized) // { // var needsPriceCheck = quoteItems.Any(p => !p.IsCatList.Value && !p.IsPriceChecked.Value); // var needsCatListCost = quoteItems.Any(p => !p.IsCatList.Value && !p.CatListCostPrice.HasValue); // if (needsPriceCheck) // { // db.QuoteItems_CheckPreviouslyQuotedPrice(userId, quoteId); // } // if (needsCatListCost) // { // db.QuoteItems_ApplyCATListPrice(userId, quoteId); // } // if (needsCatListCost || needsPriceCheck) // { // db.SaveChanges(); // quoteItems = db.vQuoteItems // .Where(p => p.ParentSurfaceItemId == quoteId) // .ToList(); // } // } // quoteItems = quoteItems // .OrderBy(p => Array.IndexOf(sortedMasterNumbers, p.QuoteItems_QuoteItems_PartsMasterPartNumber)) // //.ThenBy(p => p.QuoteItems_QuoteItems_QuoteItemsSequenceNumber) // .ThenBy(p => p.QuoteItems_QuoteItems_PartsMasterPartNumber) // .ThenBy(p => BusinessUtils.GetQuoteItemSupplierSequence(p.QuoteItems_QuoteItems_QuoteItemsSupplier) /* p.QuoteItems_QuoteItems_QuoteItemsSupplierSequenceNumber */) // .ThenBy(p => p.QuoteItems_QuoteItems_QuoteItemsSupplier) // .ToList(); // return quoteItems.AsQueryable(); // } // public IQueryable GetBuyoutSuppliers(int quoteId) // { // return db.QuoteBuyoutSuppliers // .Where(p => // p.isActive.Value // && p.ParentSurfaceItemId == quoteId // ) // .OrderBy(p => p.QuoteBuyoutSuppliers_QuoteBuyoutSuppliers_SupplierTradingName); // } // #endregion // #region Helper Methods // /// // /// Generate Quote Number using Invoice Number // /// // /// // /// // protected string GetQuoteNumberByInvoiceNumber(int invoiceNumber) // { // // generate quote number // string quoteNumber = db.Setup.saleQTEPrefix; // int saleQTENumLength = db.Setup.saleQTENumLength.GetValueOrDefault(); // quoteNumber = quoteNumber.PadRight(saleQTENumLength - invoiceNumber.ToString().Length, '0'); // quoteNumber += invoiceNumber.ToString(); // return quoteNumber; // } // #endregion // } //}