示例#1
0
        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"));
        }
示例#2
0
 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");
 }
示例#3
0
 public ActionResult NewTerm(TermDTO term)
 {
     try {
         _service.AddTerm(term, User.Identity.GetUserName());
         return(RedirectToAction("Index"));
     }
     catch {
         return(View());
     }
 }
示例#4
0
        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"));
        }
示例#5
0
        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);
        }
示例#6
0
        // 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;"">&nbsp;&nbsp;&nbsp;" + orderdetails.TermName + " | YEAR " + orderdetails.ProductYear + " " + orderdetails.ProductName + @"</td>
                                    <td style=""border: 1px solid black;
                        border-collapse: collapse; text-align:right;"">" + orderdetails.Price.ToString("C") + @"&nbsp;</td>
                                    <td style=""border: 1px solid black;
                        border-collapse: collapse; text-align:right;"">" + orderdetails.Quantity + @"&nbsp;</td>
                                    <td style=""border: 1px solid black;
                        border-collapse: collapse; text-align:right;"">" + orderdetails.Total.ToString("C") + @"&nbsp;</td>
                                </tr>";
                }
                else
                {
                    invoiceList += @"
                                <tr>
                                    <td style=""border: 1px solid black;
                        border-collapse: collapse;"">&nbsp;&nbsp;&nbsp;" + orderdetails.TermName + " | YEAR " + orderdetails.ProductYear + " " + orderdetails.ProductName + @"</td>
                                    <td style=""border: 1px solid black;
                        border-collapse: collapse; text-align:right;"">" + orderdetails.Price.ToString("C") + @"&nbsp;</td>
                                    <td style=""border: 1px solid black;
                        border-collapse: collapse; text-align:right;"">" + orderdetails.TeachersQty + @"&nbsp;</td>
                                    <td style=""color:tomato; border: 1px solid black;
                        border-collapse: collapse; text-align:right;"">" + orderdetails.Total.ToString("C") + @"&nbsp;</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);
        }