public async Task <ContentResult> GetInvoiceItem(GetInvoiceInput input) { try { List <ExtraDto> extralist = new List <ExtraDto>(); ReturnMessage rm = new ReturnMessage(1, "Success"); var invoices = await Task.Run(() => _unitOfWork.Invoices.GetAsync(filter: w => input.Id != 0 ? (w.Id == input.Id) : true, includeProperties: "Customer,Booking")); var invoicesToReturn = _mapper.Map <IEnumerable <InvoiceDto> >(invoices); // var extra = _unitOfWork.BookingExtras.Find(x => x.BookingId == invoices.First().Booking.Id); var extra = await Task.Run(() => _unitOfWork.BookingExtras.GetAsync(filter: w => w.BookingId == invoices.First().BookingId, includeProperties: "Extra")); var cars = await Task.Run(() => _unitOfWork.Cars.GetAsync(filter: w => w.Id == invoices.First().Booking.CarId, includeProperties: "CarClassification")); var car = _mapper.Map <IEnumerable <CarDto> >(cars).First(); var payment = _unitOfWork.Payments.Find(x => x.InvoiceId == input.Id).SingleOrDefault(); PaymentDto paymentDto = _mapper.Map <PaymentDto>(payment); if (paymentDto != null) { paymentDto.PaymentType = ((Utility.PaymentType)Convert.ToInt32(paymentDto.PaymentType)).ToString(); } foreach (var item in extra) { var extraDto = _mapper.Map <ExtraDto>(item.Extra); extraDto.Count = item.Count ?? 0; extralist.Add(extraDto); } InvoiceDetailDto invoiceDetail = new InvoiceDetailDto() { Invoice = invoicesToReturn.First(), InvoiceId = invoicesToReturn.First().Id, Booking = invoicesToReturn.First().Booking, BookingExtraList = extralist, Car = car, Payment = paymentDto }; List <InvoiceDetailDto> invoicedetailList = new List <InvoiceDetailDto>(); invoicedetailList.Add(invoiceDetail); return(this.Content(rm.returnMessage(new PagedResultDto <InvoiceDetailDto> (invoicedetailList.AsQueryable(), input.pagenumber, input.pagesize)), "application/json")); } catch (Exception ex) { return(this.Content(JsonConvert.SerializeObject(new { msgCode = -3, msg = ex.Message }), "application/json")); } }
public async Task <ContentResult> GetInvoice(GetInvoiceInput input) { IEnumerable <Invoice> invoices; try { ReturnMessage rm = new ReturnMessage(1, "Success"); var current_user = HttpContext.Session.GetObjectFromJson <RegisterUserDto>("current_user"); if (current_user.BranchId != 3 || current_user.UserRole == "Staff") { var users = await Task.Run(() => _unitOfWork.BranchStaff.GetAsync(filter: w => w.BranchId == current_user.BranchId, includeProperties: "Staff")); List <string> usersinbranch = new List <string>(); foreach (var item in users) { usersinbranch.Add(item.Staff.UserName); } invoices = await Task.Run(() => _unitOfWork.Invoices.GetAsync(filter: w => (input.Id != 0 ? (w.Id == input.Id) : true) && usersinbranch.Contains(w.CreatedBy), includeProperties: "Customer,Booking")); } else { invoices = await Task.Run(() => _unitOfWork.Invoices.GetAsync(filter: w => input.Id != 0 ? (w.Id == input.Id) : true, includeProperties: "Customer,Booking")); } var invoicesToReturn = _mapper.Map <IEnumerable <InvoiceDto> >(invoices); return(this.Content(rm.returnMessage(new PagedResultDto <InvoiceDto> (invoicesToReturn.AsQueryable(), input.pagenumber, input.pagesize)), "application/json")); } catch (Exception ex) { return(this.Content(JsonConvert.SerializeObject(new { msgCode = -3, msg = ex.Message }), "application/json")); } }