public ActionResult EditTerm(TermDTO row) { //Set time var now = preUni.getCurrentTime(); // Check model state if (!ModelState.IsValid) { TempData["FM"] = "Fail to edit term - input invalid"; return(RedirectToAction("Index")); } TermDTO dto; using (Db db = new Db()) { dto = db.Terms.Find(row.TermId); dto.Term = row.Term; dto.IsCurrent = row.IsCurrent; dto.EndDate = row.EndDate; dto.StartDate = row.StartDate; dto.CreatedAt = now; dto.StartDate2 = row.StartDate; dto.EndDate2 = row.EndDate; db.SaveChanges(); preUni.logging(User.Identity.Name, "Edit term: " + dto.TermId + " : " + dto.Term); } return(RedirectToAction("index")); }
public TermVM(TermDTO row) { TermId = row.TermId; Year = row.Year; Term = row.Term; Name = Year + "-" + Term; StartDate = row.StartDate.ToString("dd-MM-yyyy"); EndDate = row.EndDate.ToString("dd-MM-yyyy"); }
public ActionResult NewTerm(TermDTO term) { try { _service.AddTerm(term, User.Identity.GetUserName()); return(RedirectToAction("Index")); } catch { return(View()); } }
public ActionResult CreateTerm(TermDTO row) { //Set time var now = preUni.getCurrentTime(); // Check model state if (!ModelState.IsValid) { TempData["FM"] = "Fail to create term - input invalid"; return(RedirectToAction("Index")); } TermDTO dto = new TermDTO() { IsCurrent = row.IsCurrent, Year = row.Year, Term = row.Term, StartDate = row.StartDate, EndDate = row.EndDate }; dto.CreatedAt = now; dto.Week = preUni.calTotalWeek(dto.StartDate, dto.EndDate); dto.StartDate2 = row.StartDate; dto.EndDate2 = row.EndDate; preUni.logging(User.Identity.Name, "Create term: " + dto.TermId + " : " + dto.Term); using (Db db = new Db()) { db.Terms.Add(dto); db.SaveChanges(); } return(RedirectToAction("index")); }
public SearchResult Search(DateTime arrival, int nights, decimal?maxPrice = null, IEnumerable <TermFilterDTO> terms = null, string text = null, int offset = 0) { var sw = new Stopwatch(); sw.Start(); slimLock.EnterReadLock(); var departure = arrival.AddDays(nights); var searchResponse = client.Search <RoomDocument>(descriptor => descriptor .Index(indexName) .From(offset) .Size(10) .Aggregations(aggregations => { // We don't need aggregations when we're loading more pages of the // search we did earliear, since we already got that information if (offset > 0) { return(aggregations); } return(aggregations .Terms("hotelName", aggr => aggr.Field("hotelName")) .Terms("services", aggr => aggr.Field("services")) .Terms("bedTypes", aggr => aggr.Field("bedTypes")) //.Terms("IsDiscounted", aggr => aggr.Field("isDiscounted")) .Terms("totalPeople", aggr => aggr.Field("totalPeople")) //.Range("priceRange", aggr => aggr.Field("price").Ranges(range => range.To(70), range => range.From(70).To(90), range => range.From(90).To(110), range => range.From(110))) ); } ) .Query(query => query.FunctionScore(score => score.BoostMode(FunctionBoostMode.Sum).Functions(function => function.FieldValueFactor(value => value.Field("rating"))) .Query(scoreQuery => scoreQuery.Bool(boolquery => { var must = new List <Func <QueryContainerDescriptor <RoomDocument>, QueryContainer> >(); var must_not = new List <Func <QueryContainerDescriptor <RoomDocument>, QueryContainer> >(); var should = new List <Func <QueryContainerDescriptor <RoomDocument>, QueryContainer> >(); var filter = new List <Func <QueryContainerDescriptor <RoomDocument>, QueryContainer> >(); int minimunShouldMatch = 0; must_not.Add( mustNot => mustNot.HasChild <ReservationDocument>(hasChild => hasChild .Query(childQuery => childQuery.DateRange(childDateRange => childDateRange.Field(reservation => reservation.Date).GreaterThanOrEquals(arrival).LessThan(departure)) )) ); if (terms != null && terms.Any()) { foreach (var term in terms) { filter.Add(filterQuery => filterQuery.Term(mustTerm => mustTerm.Field(term.Aggregation).Value(term.Term).Verbatim())); } } if (!string.IsNullOrEmpty(text)) { text = text.TrimEnd('*') + '*'; should.Add(shouldQuery => shouldQuery.QueryString(queryString => queryString.Boost(2.0).Query(text).Fields(fields => fields.Field("roomName", 2.0).Field("hotelNameAnalyzed", 5.0)))); //If you wanted to do a fuzzy query you should do this instead //should.Add(shouldQuery => shouldQuery.Match(match => match.Boost(5.0).Field(d => d.HotelNameAnalyzed).Fuzziness(Fuzziness.EditDistance(6)).Query(text))); //should.Add(shouldQuery => shouldQuery.Match(match => match.Boost(2.0).Field(d => d.RoomName).Fuzziness(Fuzziness.EditDistance(6)).Query(text))); minimunShouldMatch++; } if (maxPrice.HasValue) { filter.Add(filterQuery => filterQuery.Range(range => range.Field(room => room.Price).LessThanOrEquals(Convert.ToDouble(maxPrice.Value)))); } return(boolquery.Must(must).MustNot(must_not).Should(should).Filter(filter).MinimumShouldMatch(MinimumShouldMatch.Fixed(minimunShouldMatch))); } )))) ); slimLock.ExitReadLock(); sw.Stop(); var result = new SearchResult { Aggregations = searchResponse.Aggregations.Select(aggr => new AggregationDTO { Aggregation = aggr.Key, Terms = (aggr.Value as BucketAggregate).Items.Select(bucket => TermDTO.FromBucket(bucket)).Where(dto => dto != null && dto.DocumentCount > 0) }), TotalResults = searchResponse.Total, QueryDuration = searchResponse.Took, RequestDuration = sw.ElapsedMilliseconds, Hits = searchResponse.Hits.Select(hit => new ResultDTO { Room = hit.Source, Score = Convert.ToDecimal(hit.Score) }) }; return(result); }
// make invoice by orderId public string MakeInvoice() { string invoiceBody = ""; string invoiceList = ""; InvoiceVM invoiceVM; using (Db db = new Db()) { OrderDTO row = db.Orders.Find(orderId); UserDTO userdto = db.Users.Where(x => x.BranchCode == row.BranchCode).FirstOrDefault(); TermDTO termdto = db.Terms.OrderByDescending(x => x.StartDate).FirstOrDefault(x => x.IsCurrent == 1); decimal subTotal = 0; decimal grandTotal = 0; decimal discountTotal = 0; invoiceVM = new InvoiceVM(row); invoiceVM.BranchName = userdto.BranchName; invoiceVM.BranchAddress = userdto.Street + " " + userdto.Suburb + " " + userdto.State + " " + userdto.Postcode; invoiceVM.CreatedDay = invoiceVM.CreatedAt.ToString("dd/MM/yyyy"); invoiceVM.CreatedTerm = termdto.Year + " Term " + termdto.Term; //make each row(Book & Tcopy) List <OrderDetailVM> ListBook = db.OrderDetails.ToArray().Where(x => x.OrderId == row.OrderId).Select(x => new OrderDetailVM(x)).ToList(); List <OrderDetailVM> ListTCopy = db.OrderDetails.ToArray().Where(x => x.OrderId == row.OrderId).Select(x => new OrderDetailVM(x)).ToList(); foreach (var orderdetail in ListBook) { orderdetail.TeachersQty = 0; grandTotal += orderdetail.Total; } foreach (var orderdetail in ListTCopy) { orderdetail.ProductName = orderdetail.ProductName + " Teacher's Copy"; orderdetail.Quantity = 0; orderdetail.Total = orderdetail.TeachersQty * orderdetail.Price; discountTotal += orderdetail.Total; } invoiceVM.OrderDetailList = ListBook.Concat(ListTCopy.Where(x => x.TeachersQty > 0)).OrderBy(x => x.CategoryName).ThenBy(x => x.ProductYear).ToList(); //cal price decimal GST = grandTotal * (decimal)0.1; invoiceVM.GST = GST.ToString("C2"); invoiceVM.GrandTotal = grandTotal.ToString("C2"); invoiceVM.DiscountTotal = discountTotal.ToString("C2"); subTotal = discountTotal + grandTotal; invoiceVM.SubTotal = subTotal.ToString("C2"); } foreach (var orderdetails in invoiceVM.OrderDetailList) { if (orderdetails.Quantity != 0) { invoiceList += @" <tr> <td style=""border: 1px solid black; border-collapse: collapse;""> " + orderdetails.TermName + " | YEAR " + orderdetails.ProductYear + " " + orderdetails.ProductName + @"</td> <td style=""border: 1px solid black; border-collapse: collapse; text-align:right;"">" + orderdetails.Price.ToString("C") + @" </td> <td style=""border: 1px solid black; border-collapse: collapse; text-align:right;"">" + orderdetails.Quantity + @" </td> <td style=""border: 1px solid black; border-collapse: collapse; text-align:right;"">" + orderdetails.Total.ToString("C") + @" </td> </tr>"; } else { invoiceList += @" <tr> <td style=""border: 1px solid black; border-collapse: collapse;""> " + orderdetails.TermName + " | YEAR " + orderdetails.ProductYear + " " + orderdetails.ProductName + @"</td> <td style=""border: 1px solid black; border-collapse: collapse; text-align:right;"">" + orderdetails.Price.ToString("C") + @" </td> <td style=""border: 1px solid black; border-collapse: collapse; text-align:right;"">" + orderdetails.TeachersQty + @" </td> <td style=""color:tomato; border: 1px solid black; border-collapse: collapse; text-align:right;"">" + orderdetails.Total.ToString("C") + @" </td> </tr>"; } } invoiceBody = @" <div style=""text-align:right;""> <ul style = ""padding: 0px; list-style-type: none;""> <li> <h2>BENKEI FRANCHISE PTY LTD</h2> </li> <li>5 THE CRESCENT</li> <li>STRATHFIELD. NSW 2135</li> <li>TEL: 02 9746 7000</li> <li>ABN: 36 600 419 270</li> </ul> </div> <div style=""text-align:right; float: right;""> <ul style = ""padding: 0px; list-style-type: none;""> <li style=""font-size:1em;""> INVOICE NO: " + invoiceVM.OrderNo + @" </li> <li style=""font-size:1em;""> ISSUE DATE: " + invoiceVM.CreatedDay + @" </li> </ul> </div> <div style=""text-align:left;""> <ul style = ""padding: 0px; list-style-type: none;""> <li> <h1>Order statement<br>-" + invoiceVM.CreatedTerm + @" </li> <li> BILL TO: " + invoiceVM.BranchName + @" NEW COLLEGE PTY LTD <b>(" + invoiceVM.BranchName + @" BRANCH)</b> </li> <li>" + invoiceVM.BranchAddress + @"</li> </ul> </div> <table style=""width:100%; border: 1px solid black; border-collapse: collapse;""> <thead> <tr style=""text-align:center;""> <th style=""border: 1px solid black; border-collapse: collapse; background-color: beige;"">DESCRIPTION</th> <th style=""border: 1px solid black; border-collapse: collapse; background-color: beige;"">UNIT PRICE</th> <th style=""border: 1px solid black; border-collapse: collapse; background-color: beige;"">QUANTITY</th> <th style=""border: 1px solid black; border-collapse: collapse; background-color: beige;"">PRICE</th> </tr> </thead> <tbody> " + invoiceList + @" </tbody> </table> <br> <table style=""width:50%; border:0px; text-align:right; float:right""> <tr> <td>SUB-TOTAL (INC.GST):</td> <td>" + invoiceVM.SubTotal + @"</td> </tr> <tr> <td>DISCOUNT*(Teacher's Copy):</td> <td>-" + invoiceVM.DiscountTotal + @"</td> </tr> <tr> <td>GST</td> <td>" + invoiceVM.GST + @"</td> </tr> <tr> <td>TOTAL (INC.GST):</td> <td>" + invoiceVM.GrandTotal + @"</td> </tr> </table> <br> <br> <br> <br> <br> <br> <div style=""text-align:center;""> <ul style = ""padding: 0px; list-style-type: none;""> <li>*NOTE: All teacher's copies must be returned promptly upon completion of the use of the copy</li> <hr> <li> <i>PLEASE DETACH AND RETURN THIS SECTION WITH YOUR PAYMENT.</i> </li> <li> <i>PAYMENT TERM WITHIN 14 DAYS</i> </li> </ul> </div> <br> <div class=""row m-0""> <div style=""float:left; width:40%""> <ul style = ""padding: 0px; list-style-type: none;""> <li>REFERENCE ID: " + invoiceVM.BranchName + @"</li> <li>INVOICE NO: " + invoiceVM.OrderNo + @"</li> <br> <br> <li> <u><b>CHEQUE PAYABLE TO:</b></u> </li> <li> <b>BENKEI FRANCHISE PTY LTD</b> </li> </ul> </div> <div style=""float:right; width:55%""> <div style=""text-align:center; padding:8px;background-color:lightpink; border:3px solid red""> <pr><b>TOTAL (INC. GST):</b></pr> <pr style=""font-size:2em;""><b>" + invoiceVM.GrandTotal + @"</b></pr> </div> <br /> <ul style = ""padding: 0px; list-style-type: none;""> <li> <u><b><i>BANK TRANSFER</i></b></u> </li> <li>ACC. NAME: <b>BENKEI FRANCHISE PTY LTD</b></li> <li>BSB: <b>012 - 401</b></li> <li>ACC. NO.: <b>3956 - 55879</b></li> </ul> </div> </div>"; return(invoiceBody); }