public EventBasicInfoViewModel EventBasicInfoViewModel(IEnumerable <Host> hosts, Event theEvent, IEnumerable <Pod> pods, IEnumerable <EventAppointmentStatsModel> eventAppointmentStatsModels, IEnumerable <OrderedPair <long, long> > eventHpPairs, IEnumerable <Organization> organizations) { var eventModel = new EventBasicInfoViewModel(); var host = hosts.First(h => h.Id == theEvent.HostId); eventModel = Mapper.Map <Event, EventBasicInfoViewModel>(theEvent); eventModel.HostAddress = Mapper.Map <Address, AddressViewModel>(host.Address); eventModel.HostName = host.OrganizationName; eventModel.Pods = pods != null ? pods.Where(p => theEvent.PodIds.Contains(p.Id)) .Select(p => new OrderedPair <long, string>(p.Id, p.Name)).ToArray() : null; var eventAppointmentStatsModel = eventAppointmentStatsModels.Where(easm => easm.EventId == theEvent.Id).Select(easm => easm).Single(); eventModel.TotalAppointmentSlots = eventAppointmentStatsModel.TotalSlots - eventAppointmentStatsModel.BlockedSlots; eventModel.FilledAppintmentSlots = eventAppointmentStatsModel.BookedSlots; eventModel.BookedSlots = eventAppointmentStatsModel.FilledSlots; eventModel.IsDynamicScheduling = eventAppointmentStatsModel.IsDynamicScheduling; eventModel.AfternoonAvailableSlots = eventAppointmentStatsModel.AfternoonAvailableSlots; eventModel.MorningAvailableSlots = eventAppointmentStatsModel.MorningAvailableSlots; eventModel.EveningAvailableSlots = eventAppointmentStatsModel.EveningAvailableSlots; var sponsor = string.Empty; if (eventHpPairs != null && eventHpPairs.Any()) { var hospitalPartnerId = eventHpPairs.Where(o => o.FirstValue == theEvent.Id).Select(o => o.SecondValue).FirstOrDefault(); if (hospitalPartnerId > 0) { sponsor = organizations.Where(o => o.Id == hospitalPartnerId).Select(o => o.Name).First(); } } if (string.IsNullOrEmpty(sponsor)) { if (theEvent.AccountId.HasValue && theEvent.AccountId.Value > 0) { sponsor = organizations.Where(o => o.Id == theEvent.AccountId.Value).Select(o => o.Name).First(); } } eventModel.Sponsor = sponsor; return(eventModel); }
public EventCustomerSummaryModel Create(EventCustomer eventCustomer, Order order, EventBasicInfoViewModel eventInfo, Customer customer, DateTime?apptTime, IEnumerable <OrderedPair <long, string> > orderPackageNamePair, IEnumerable <OrderedPair <long, string> > orderTestNamePair, IEnumerable <OrderedPair <long, string> > orderitemProductPair, IEnumerable <ShippingDetail> shippingDetails, IEnumerable <SourceCode> sourceCodes, IEnumerable <ChargeCard> cards) { string package = ""; if (orderPackageNamePair != null && orderPackageNamePair.Count() > 0) { package = orderPackageNamePair.FirstOrDefault().SecondValue; } if (orderTestNamePair != null && orderTestNamePair.Count() > 0) { var tests = string.Join(",", orderTestNamePair.Select(ot => ot.SecondValue)); package = !string.IsNullOrEmpty(package) ? package + ", " + tests : tests; } var getCardDetailstoDisplay = new Func <long, string>(cardId => { return(cards.Where(c => c.Id == cardId).Select( c => c.TypeId.ToString() + " " + c.Number.Substring(c.Number.Length - 4, 4)).FirstOrDefault()); }); var payments = order.PaymentsApplied != null ? order.PaymentsApplied.Select( pa => new OrderedPair <string, decimal>(pa.PaymentType == PaymentType.CreditCard ? getCardDetailstoDisplay(((ChargeCardPayment)pa).ChargeCardId) : pa.PaymentType.ToString(), pa.Amount)) : null; var sourceCodeOrderDetail = order.OrderDetails.Where( od => od.SourceCodeOrderDetail != null && od.OrderItemStatus.OrderStatusState == OrderStatusState.FinalSuccess).Select(od => od.SourceCodeOrderDetail).FirstOrDefault(); var sourceCode = sourceCodes != null && sourceCodes.Count() > 0 ? sourceCodes.FirstOrDefault() : null; return(new EventCustomerSummaryModel() { AdditionalProduct = orderitemProductPair != null ? String.Join(", ", orderitemProductPair.Select(oip => oip.SecondValue)) : "", Address = eventInfo.HostAddress, AmountDue = order.DiscountedTotal - order.TotalAmountPaid, AmountPaid = order.TotalAmountPaid, Cost = order.UndiscountedTotal, AppointmentTime = apptTime, CustomerId = eventCustomer.CustomerId, CustomerName = customer.NameAsString, HomePhoneNumber = customer.HomePhoneNumber != null?customer.HomePhoneNumber.ToString() : "", OfficePhoneNumber = customer.OfficePhoneNumber != null?customer.OfficePhoneNumber.ToString() : "", CellPhoneNumber = customer.MobilePhoneNumber != null?customer.MobilePhoneNumber.ToString() : "", Email = customer.Email != null?customer.Email.ToString() : "", EventCustomerId = eventCustomer.Id, EventDate = eventInfo.EventDate, EventId = eventCustomer.EventId, Host = eventInfo.HostName, OrderId = order.Id, Package = package, Payments = payments, ShippingOptions = shippingDetails != null ? shippingDetails.Select( sd => new OrderedPair <string, decimal>(sd.ShippingOption.Name, sd.ActualPrice)) : null, SourceCode = sourceCode != null ? sourceCode.CouponCode : "", SourceCodeAmount = sourceCodeOrderDetail != null ? sourceCodeOrderDetail.Amount : 0, EventStatus = eventInfo.Status }); }