public Task <Result <Guid> > Add(CreateTicketModel model) => _ticketBiz.Add(model);
private async Task <Result <(Guid, bool)> > PerformActions(UserSurvey userSurvey) { var actionGroups = userSurvey.UserAnswer.SelectMany(ua => ua.Answer.Action).GroupBy(a => a.Type); bool makeAppointment = false; var invoiceId = Guid.Empty; for (int i = 0; i < actionGroups.OrderBy(a => a.Key).Reverse().Count(); i++) { var action = actionGroups.ToList()[i]; var type = (ActionType)action.Key; switch (type) { case ActionType.CreateAppointment: makeAppointment = true; break; case ActionType.AddDependent: break; case ActionType.SendTicketAndCreateAppointment: await _ticketBiz.Add(new CreateTicketModel { Priority = TicketPriority.Medium, Text = "Survey Was Too Complex For Online Process , Please Review Booked Consultation For This User.", Title = "Survey", UserId = generalDataService.User.Id }, userSurvey, false); makeAppointment = true; break; } } var amount = 95 + (userSurvey.UserDependentSurvey.Count * 95); decimal tax = (decimal)amount * 5 / 100; var hasSpouse = actionGroups.Any(a => a.Key == (int)ActionType.AddSpouse); var spouseText = ""; if (hasSpouse) { spouseText = "Spousal Income Tax : 1 x $95 \n"; } var dependentCount = userSurvey.UserDependentSurvey.Count; if (hasSpouse) { dependentCount--; } var dependentText = ""; if (dependentCount > 0) { dependentText = $"+19 Dependent Income Tax : {dependentCount} x $95 \n"; } var mainuserText = ""; if (dependentCount > 0) { mainuserText = $"Main User Income Tax Return : 1 x $95 \n"; } invoiceId = (await _invoiceBiz.Add(new CreateInvoiceModel { Amount = amount, Description = $"{mainuserText} {spouseText} {dependentText} SubTotal = ${amount} \n Taxes(GST)= ${(decimal)tax} \n Total = ${(decimal)(amount + tax)}", Title = "Personal Tax Return", UserSurveyId = userSurvey.Id, Enabled = true, Status = InvoiceStatus.Pending, UserId = generalDataService.User.Id }, userSurvey)).Data; await _taxBiz.AddForSurvey(new CreateTaxModel { UserId = generalDataService.User.Id, Title = userSurvey.Survey.Name, Description = userSurvey.Survey.Description, Enabled = true, Status = makeAppointment ? TaxStatus.SetConsultation : TaxStatus.PaymentPending }, userSurvey); return(Result <(Guid, bool)> .Successful((invoiceId, makeAppointment))); }