public Task <Result <InvoiceCoreModel> > Get(BaseCoreModel coreModel) => Result <InvoiceCoreModel> .TryAsync(async() => { var invoice = (await _repository.FirstOrDefaultAsync <Invoice>(i => i.Id == coreModel.Id)).Data; if (invoice == null) { return(Result <InvoiceCoreModel> .Failed(Error.WithData(1000, new[] { "Invoice not found " }))); } var user = (await _membershipServiceApi.AuthAuthApiService.Setting( new MembershipService.ApiClient.Models.BaseModel { Id = invoice.UserId })).Data; if (user == null) { return(Result <InvoiceCoreModel> .Failed(Error.WithData(1000, new[] { "User not found " }))); } return(Result <InvoiceCoreModel> .Successful(new InvoiceCoreModel { Id = invoice.Id, Amount = invoice.Amount, Description = invoice.Description, Status = (InvoiceStatus)invoice.Status, Title = invoice.Title, User = user, CreationDate = invoice.CreationDate, Enabled = invoice.Enabled })); });
public Task <Result <MessageCoreModel> > Get(BaseCoreModel coreModel) => Result <MessageCoreModel> .TryAsync(async() => { var message = (await _repository.FirstOrDefaultAsync <Message>(i => i.Id == coreModel.Id)).Data; if (message == null) { return(Result <MessageCoreModel> .Failed(Error.WithData(1000, new[] { "Message not found " }))); } var userIds = new List <Guid> { message.FromUserId, message.ToUserId }; var users = (await _membershipServiceApi.SystemUserApiService.ListByIds(userIds)).Data; message.IsRead = true; await _repository.CommitAsync(); return(Result <MessageCoreModel> .Successful(new MessageCoreModel { Id = message.Id, Body = message.Body, Title = message.Title, Priority = (MessagePriority)message.Priority, FromUser = users.FirstOrDefault(u => u.Id == message.FromUserId), ToUser = users.FirstOrDefault(u => u.Id == message.ToUserId), Enabled = message.Enabled })); });
public async Task <Result <string> > CreateOrder(BaseCoreModel coreModel) { var invoice = await _repository.FirstOrDefaultAsync <Invoice>(i => i.Id == coreModel.Id, i => i.UserSurvey.Select(us => us.Tax), i => i.PaypalOrder); if (!invoice.Success || invoice.Data == null) { return(Result <string> .Failed(Error.WithData(1000, new[] { "Invoice not found" }))); } var result = await _paypalHttpClient.Order(invoice.Data.Id.ToString(), invoice.Data.Amount); if (!result.Success || result.Data == null) { return(Result <string> .Failed(result.Error)); } var paypalOrderStatus = invoice.Data.PaypalOrder?.Status; invoice.Data.PaypalOrder = result.Data; if (!string.IsNullOrEmpty(paypalOrderStatus)) { invoice.Data.PaypalOrder.Status = "#" + invoice.Data.PaypalOrder.Status; } await _repository.CommitAsync(); return(Result <string> .Successful(result.Data.ApproveLink)); }
public Task <Result <SurveyCoreModel> > Get(BaseCoreModel coreModel) => Result <SurveyCoreModel> .TryAsync(async() => { var result = await _repository.FirstOrDefaultAsNoTrackingAsync <Survey>(s => s.Id == coreModel.Id, s => s.Question.Select( q => q.Answer.Select(a => a.Action)), s => s.Question.Select(q => q.MustAnswered.Select(ma => ma.Answer))); if (!result.Success || result.Data == null) { return(Result <SurveyCoreModel> .Failed(Error.WithData(1000, new[] { "Survey not found " }))); } var isAdmin = generalDataService.User.Permissions.Any(p => p == (int)PermissionType.Admin); var survey = result.Data; var user = await _membershipServiceApi.AuthAuthApiService.Setting( new MembershipService.ApiClient.Models.BaseModel { Id = survey.CreatedBy }); if (!user.Success || user.Data == null) { return(Result <SurveyCoreModel> .Failed(Error.WithData(1000, new[] { "User not found " }))); } user.Data.Role = null; var surveyModel = new SurveyCoreModel { Id = survey.Id, Name = survey.Name, Description = survey.Description, Enabled = survey.Enabled ?? true, CreatedBy = isAdmin ? user.Data : null, Questions = survey.Question.Select(q => new QuestionCoreModel { Id = q.Id, Text = q.Text, Number = q.Number, MustAnsweredNumber = q.MustAnswered.Select(ma => ma.Answer.Number).ToList(), Answers = q.Answer.Select(a => new AnswerCoreModel { Id = a.Id, Text = a.Text, Number = a.Number, Type = (AnswerType)a.Type, Actions = a.Action.Select(action => new ActionCoreModel { Id = action.Id, Type = (ActionType)action.Type, Value = action.Value }).ToList() }).ToList() }).ToList() }; return(Result <SurveyCoreModel> .Successful(surveyModel)); });
public Task <Result <DataAccess.EFModels.Blob> > Get(BaseCoreModel coreModel) => Result <DataAccess.EFModels.Blob> .TryAsync(async() => { var result = await _repository.FirstOrDefaultAsNoTrackingAsync <DataAccess.EFModels.Blob>(b => b.Id == coreModel.Id); if (result.Data == null) { return(Result <DataAccess.EFModels.Blob> .Failed(Error.WithCode(ErrorCodes.NotFound))); } return(Result <DataAccess.EFModels.Blob> .Successful(result.Data)); });
public Task <Result <UserAnswerModel> > NextQuestion(BaseCoreModel coreModel) // question Id => Result <UserAnswerModel> .TryAsync(async() => { var result = await _repository.FirstOrDefaultAsync <Answer>(a => a.Question.Id == coreModel.Id, us => us.UserAnswer.Select(ua => ua.Answer.Question.MustAnswered), a => a.Question.Survey.Question.Select(q => q.Answer.Select(aa => aa.Action)), a => a.Action); if (!result.Success || result.Data == null) { return(Result <UserAnswerModel> .Failed(Error.WithCode(ErrorCodes.NotFound))); } var answer = result.Data; var resultUserSurvey = await _repository.FirstOrDefaultAsync <UserSurvey>(us => us.SurveyId == answer.Question.Survey.Id && us.UserId == generalDataService.User.Id, us => us.UserAnswer.Select(ua => ua.Answer.Question.Survey.Question.Select(q => q.Answer.Select(a => a.UserAnswer))), us => us.UserAnswer.Select(ua => ua.Answer.Question.Survey.Question.Select(q => q.Answer.Select(a => a.MustAnswered))), us => us.Survey, us => us.UserAnswer.Select(ua => ua.Answer.Question.MustAnswered)); var userSurvey = resultUserSurvey.Data; if (!userSurvey.UserAnswer.Any()) { return(Result <UserAnswerModel> .Failed(Error.WithData(1000, new[] { "you have to answer the current question to see the next question" }))); } var nextQuestion = CalculateNextQuestion(userSurvey.UserAnswer.Select(ua => ua.Answer) .FirstOrDefault(a => a.Question.Id == coreModel.Id), userSurvey, true); var answers = userSurvey.UserAnswer.Where(ua => ua.Answer.Question.Number == nextQuestion.Number) .ToList(); if (!answers.Any() && nextQuestion.Number - 1 != userSurvey.UserAnswer.Select(ua => ua.Answer.Question).Max(q => q.Number)) { return(Result <UserAnswerModel> .Failed(Error.WithData(1000, new[] { "this is the last question user has answered " }))); } return(Result <UserAnswerModel> .Successful(new UserAnswerModel { Question = nextQuestion, QuestionCount = userSurvey.Survey.Question.Count, UserAnswerId = answers.Any() ? answers?.Select(a => a.Answer.Id)?.ToList() : new List <Guid>(), AnswerType = answers.Any() ? (AnswerType)answers.FirstOrDefault()?.Answer?.Type : AnswerType.Static, AnswerText = answers.Any() ? answers.FirstOrDefault()?.Answer?.Text : "", UserAnswerText = answers.Any() ? answers.FirstOrDefault()?.Text : "" })); });
public Task <Result <TaxCoreModel> > Get(BaseCoreModel coreModel) => Result <TaxCoreModel> .TryAsync(async() => { var result = await _repository.FirstOrDefaultAsync <Tax>(s => s.Id == coreModel.Id); if (!result.Success || result.Data == null) { return(Result <TaxCoreModel> .Failed(Error.WithData(1000, new[] { "Tax Not Found" }))); } var tax = result.Data; tax.IsChecked = true; await _repository.CommitAsync(); var userIds = tax.UserId; var user = (await _membershipServiceApi.AuthAuthApiService.Setting( new MembershipService.ApiClient.Models.BaseModel { Id = userIds })).Data; if (user == null) { return(Result <TaxCoreModel> .Failed(Error.WithData(1000, new[] { "User not found " }))); } var taxModel = new TaxCoreModel { Id = tax.Id, Title = tax.Title, Description = tax.Description, User = user, TaxFile = tax.TaxFile != null ? new TaxFileModel { EngagementBlobId = tax.TaxFile.EngagementBlobId, TaxFormBlobId = tax.TaxFile.TaxFormBlobId, ExtraTaxFile = tax.TaxFile.ExtraTaxFile != null && tax.TaxFile.ExtraTaxFile.Any() ? tax.TaxFile.ExtraTaxFile.Select(e => new ExtraTaxFileModel { Name = e.Name, BlobId = e.BlobId }).ToList() : null } : null, Amount = tax.Amount, Status = (TaxStatus)tax.Status, CreationDate = tax.CreationDate, Enabled = tax.Enabled }; return(Result <TaxCoreModel> .Successful(taxModel)); });
public Task <Result <UserUncheckedModel> > CountByUser(BaseCoreModel coreModel) => Result <UserUncheckedModel> .TryAsync(async() => { var unreadMessages = (await _messageBiz.CountByUser(coreModel.Id.Value)).Data; var uncheckedTaxes = (await _taxBiz.CountByUser(coreModel.Id.Value)).Data; var unpaidInvoices = (await _invoiceBiz.CountByUser(coreModel.Id.Value)).Data; var hasDoneSurvey = (await _userSurveyBiz.UserDoneSurvey(coreModel.Id.Value)).Data; return(Result <UserUncheckedModel> .Successful(new UserUncheckedModel { UncheckedTaxes = uncheckedTaxes, UnpaidInvoices = unpaidInvoices, UnreadMessages = unreadMessages, HasDoneSurvey = hasDoneSurvey })); });
public Task <Result> Delete(BaseCoreModel model) => Result.TryAsync(async() => { var app = await _repository.FirstOrDefaultAsync <Appointment>(a => a.Id == model.Id, a => a.Invoice); if (app.Data.Invoice != null) { _repository.Remove(app.Data.Invoice); } _repository.Remove(app.Data); await _repository.CommitAsync(); return(Result.Successful()); });
public async Task <Result <bool> > Delete(BaseCoreModel model) { var result = await _repository.FirstOrDefaultAsync <AppointmentException>(a => a.Id == model.Id); if (!result.Success || result.Data == null) { return(Result <bool> .Failed(Error.WithData(1000, new[] { "AppointmentException Not Found" }))); } _repository.Remove(result.Data); await _repository.CommitAsync(); return(Result <bool> .Successful(true)); }
public Task <Result <UserAnswerModel> > PreviousQuestion(BaseCoreModel coreModel) // question Id => Result <UserAnswerModel> .TryAsync(async() => { var result = await _repository.FirstOrDefaultAsync <Answer>(a => a.Question.Id == coreModel.Id, us => us.UserAnswer.Select(ua => ua.Answer.Question.MustAnswered), a => a.Question.Survey.Question.Select(q => q.Answer.Select(aa => aa.Action)), a => a.Action); if (!result.Success || result.Data == null) { return(Result <UserAnswerModel> .Failed(Error.WithCode(ErrorCodes.NotFound))); } var answer = result.Data; if (answer.Question.Number == 1) { return(Result <UserAnswerModel> .Failed(Error.WithData(1000, new[] { "this is the first question " }))); } var resultUserSurvey = await _repository.FirstOrDefaultAsync <UserSurvey>(us => us.SurveyId == answer.Question.Survey.Id && us.UserId == generalDataService.User.Id, us => us.UserAnswer.Select(ua => ua.Answer.Question.Survey.Question.Select(q => q.Answer.Select(a => a.UserAnswer))), us => us.UserAnswer.Select(ua => ua.Answer.Question.Survey.Question.Select(q => q.Answer.Select(a => a.MustAnswered))), us => us.Survey, us => us.UserAnswer.Select(ua => ua.Answer.Question.MustAnswered)); if (resultUserSurvey.Data == null) // first answer { return(Result <UserAnswerModel> .Successful(null)); } else // not the first answer { var userSurvey = resultUserSurvey.Data; var previousQuestion = CalculatePreviousQuestion(answer.Question, userSurvey); var answers = userSurvey.UserAnswer .Where(ua => ua.Answer.Question.Number == previousQuestion.Number) .ToList(); return(Result <UserAnswerModel> .Successful(new UserAnswerModel { Question = previousQuestion, QuestionCount = userSurvey.Survey.Question.Count, UserAnswerId = answers.Select(a => a.Answer.Id).ToList(), AnswerType = (AnswerType)answers.FirstOrDefault()?.Answer?.Type, AnswerText = answers.FirstOrDefault()?.Answer.Text, UserAnswerText = answers.FirstOrDefault()?.Text })); } });
public async Task <Result> Delete(BaseCoreModel coreModel) { var userId = new Guid(User.Claims.FirstOrDefault(c => c.Type == "Id").Value); var setting = await _membershipServiceApi.AuthAuthApiService.Setting(new BaseModel { Id = userId }); if (!setting.Data.Role.Name.ToLower().Contains("admin")) { return(Result.Failed(Error.WithData(1000, new[] { "you dont have the permission to use this service" }))); } await _userSurveyBiz.Delete(coreModel.Id.Value); return(await _membershipServiceApi.MembershipUserApiService.Delete( new MembershipService.ApiClient.Models.BaseModel { Id = coreModel.Id })); }
public async Task <Result <MessageCoreModel> > Get(BaseCoreModel coreModel) => await _messageBiz.Get(coreModel);
public Task <Result <string> > Add(BaseCoreModel coreModel) => _paypalBiz.CreateOrder(coreModel);
public async Task <Result> Delete(BaseCoreModel coreModel) => await _AppointmentBiz.Delete(coreModel);
public async Task <Result <UserAnswerModel> > PreviousQuestion(BaseCoreModel coreModel) => await _userSurveyBiz.PreviousQuestion(coreModel);
public async Task <Result <SurveyCoreModel> > Get(BaseCoreModel coreModel) => await _surveyBiz.Get(coreModel);
public async Task <Result <TaxCoreModel> > Get(BaseCoreModel coreModel) => await _taxBiz.Get(coreModel);
public async Task <Result <long> > CountByUser(BaseCoreModel coreModel) => await _invoiceBiz.CountByUser(coreModel.Id.Value);
public async Task <Result <AppointmentCoreModel> > Get(BaseCoreModel coreModel) => await _AppointmentBiz.Get(coreModel);
public async Task <Result <InvoiceCoreModel> > Get(BaseCoreModel coreModel) => await _invoiceBiz.Get(coreModel);
public async Task <Result <IList <ExceptionQuestionModel> > > SpecificQuestionAnswers(BaseCoreModel coreModel) { var usersurvey = await _repository.FirstOrDefaultAsNoTrackingAsync <UserSurvey>(u => u.SurveyId == coreModel.Id && u.UserId == generalDataService.User.Id, u => u.Survey.Question.Select(q => q.Answer.Select(a => a.Action)), u => u.UserAnswer.Select(ua => ua.Answer.Question.Answer), u => u.UserAnswer.Select(ua => ua.Answer.Question.Survey)); var answers = usersurvey.Data.UserAnswer .Where(ua => ua.Answer.Question.Number >= 16 && ua.Answer.Question.Number <= 22).ToList(); var questions = usersurvey.Data.Survey.Question.Where(q => q.Number >= 16 && q.Number <= 22).ToList(); return(Result <IList <ExceptionQuestionModel> > .Successful(questions.Select(q => { var answer = answers.FirstOrDefault(a => a.Answer.Question.Number == q.Number); return new ExceptionQuestionModel { Question = new QuestionCoreModel { Id = q.Id, Text = q.Text, Number = q.Number, Answers = q.Answer.Select(a => new AnswerCoreModel { Id = a.Id, Text = a.Text, Number = a.Number, Type = (AnswerType)a.Type }).ToList() }, UserAnswerId = answer != null ? (Guid?)answer.Answer.Id : null }; }).OrderBy(q => q.Question.Number).ToList())); }
public async Task <Result <TicketCoreModel> > Get(BaseCoreModel coreModel) => await _ticketBiz.Get(coreModel);
public async Task <Result <bool> > Delete(BaseCoreModel model) => await _appointmentExceptionBiz.Delete(model);
public IActionResult Sign(BaseCoreModel coreModel) { // Embedded Signing Ceremony // 1. Create envelope request obj // 2. Use the SDK to create and send the envelope // 3. Create Envelope Recipient View request obj // 4. Use the SDK to obtain a Recipient View URL // 5. Redirect the user's browser to the URL // 1. Create envelope request object // Start with the different components of the request Document document = new Document { DocumentBase64 = Convert.ToBase64String(global::System.IO.File.ReadAllBytes("Path")), Name = "Lorem Ipsum", FileExtension = "pdf", DocumentId = "1" }; Document[] documents = new Document[] { document }; // Create the signer recipient object Signer signer = new Signer { Email = signerEmail, Name = signerName, ClientUserId = signerClientId, RecipientId = "1", RoutingOrder = "1" }; // Create the sign here tab (signing field on the document) SignHere signHereTab = new SignHere { DocumentId = "1", PageNumber = "1", RecipientId = "1", TabLabel = "Sign Here Tab", XPosition = "195", YPosition = "147" }; SignHere[] signHereTabs = new SignHere[] { signHereTab }; // Add the sign here tab array to the signer object. signer.Tabs = new Tabs { SignHereTabs = new List <SignHere>(signHereTabs) }; // Create array of signer objects Signer[] signers = new Signer[] { signer }; // Create recipients object Recipients recipients = new Recipients { Signers = new List <Signer>(signers) }; // Bring the objects together in the EnvelopeDefinition EnvelopeDefinition envelopeDefinition = new EnvelopeDefinition { EmailSubject = "Please sign the document", Documents = new List <Document>(documents), Recipients = recipients, Status = "sent" }; // 2. Use the SDK to create and send the envelope DocuSign.eSign.Client.ApiClient apiClient = new DocuSign.eSign.Client.ApiClient(basePath); apiClient.Configuration.AddDefaultHeader("Authorization", "Bearer " + accessToken); EnvelopesApi envelopesApi = new EnvelopesApi(apiClient.Configuration); EnvelopeSummary results = envelopesApi.CreateEnvelope(accountId, envelopeDefinition); // 3. Create Envelope Recipient View request obj string envelopeId = results.EnvelopeId; RecipientViewRequest viewOptions = new RecipientViewRequest { ReturnUrl = "localhost:5000", ClientUserId = signerClientId, AuthenticationMethod = "none", UserName = signerName, Email = signerEmail }; // 4. Use the SDK to obtain a Recipient View URL ViewUrl viewUrl = envelopesApi.CreateRecipientView(accountId, envelopeId, viewOptions); // 5. Redirect the user's browser to the URL return(Redirect(viewUrl.Url)); }