Пример #1
0
        public async override Task <CreateResult <TrackBillBO> > RunAsync(CreateTrackBillCmd process, CancellationToken cancellationToken = default)
        {
            try
            {
                var httpRequest = new HttpRequestMessage(HttpMethod.Post, $"{APIUriConstants.TrackBill}/Create")
                {
                    Content = new StringContent(p_JsonSerializer.Serialize(process.Entry), Encoding.UTF8, "application/json")
                };

                var httpResponse = await p_HttpClient.SendAsync(httpRequest, cancellationToken);

                string json = await httpResponse.Content.ReadAsStringAsync();

                if (!httpResponse.IsSuccessStatusCode)
                {
                    throw new LynxHttpException(httpResponse);
                }

                return(JsonSerializer.Deserialize <CreateResult <TrackBillBO> >(json));
            }
            catch (Exception ex)
            {
                p_ExceptionHandler.LogError(ex, ex.Message);

                return(new CreateResult <TrackBillBO>
                {
                    IsCreated = false,
                    Error = ex
                });
            }
        }
Пример #2
0
 public override Task InitializeAsync(CreateTrackBillCmd tasq, CancellationToken cancellationToken)
 {
     return(p_TasqR.RunAsync(new GetTokenCmd(p_AppUser.UserID))
            .ContinueWith(result =>
     {
         p_HttpClient = p_ClientFactory.LynxApiClient(result.Result);
     }));
 }
Пример #3
0
        public override Task InitializeAsync(CreateTrackBillCmd tasq, CancellationToken cancellationToken)
        {
            //var validationResult = tasq.Validator.ValidateUsing<TrackBillBOValidator>(tasq.Entry);

            //if (!validationResult.IsValid)
            //{
            //    throw new LynxException(new ValidationException(validationResult.Errors));
            //}

            //return base.InitializeAsync(tasq, cancellationToken);
            throw new NotImplementedException();
        }
Пример #4
0
        public override Task <CreateResult <TrackBillBO> > RunAsync(CreateTrackBillCmd request, CancellationToken cancellationToken = default)
        {
            Task <CreateResult <TrackBillBO> > retVal = null;

            if (request.Entry == null)
            {
                return(Task.FromResult(new CreateResult <TrackBillBO>
                {
                    IsCreated = false,
                    Error = new LynxObjectNotFoundException <TrackBillBO>("Parameter is null")
                }));
            }

            var bill         = DbContext.Bills.SingleOrDefault(a => a.ID == request.Entry.Bill.ID);
            var billProvider = DbContext.BillProviders
                               .Include(a => a.N_ProviderType)
                               .SingleOrDefault(a => a.BillID == request.Entry.Bill.ID &&
                                                a.ProviderTypeID == request.Entry.BillProvider.ProviderTypeID);

            AssertObject.IsNotNull(bill);
            AssertObject.IsNotNull(billProvider);

            var newEntry = new TrackBill
            {
                BillID         = request.Entry.Bill.ID,
                AccountNumber  = request.Entry.AccountNumber,
                IsEnabled      = true,
                LongDesc       = request.Entry.LongDesc,
                ShortDesc      = request.Entry.ShortDesc,
                ProviderTypeID = request.Entry.BillProvider.ProviderTypeID,
                UserID         = AppUser.UserID
            };

            var entityEntry = TrackBillDbSet.Add(newEntry);

            if (newEntry.ProviderTypeID == ProviderTypeConstants.Scheduled)
            {
                newEntry.N_ProviderTypeConfigScheduler = new ProviderTypeConfigScheduler
                {
                    LongDesc     = request.Entry.ProviderTypeConfigScheduler.LongDesc,
                    Amount       = request.Entry.ProviderTypeConfigScheduler.Amount,
                    DayFrequency = request.Entry.ProviderTypeConfigScheduler.DayFrequency,
                    StartDate    = request.Entry.ProviderTypeConfigScheduler.StartDate,
                    EndDate      = request.Entry.ProviderTypeConfigScheduler.EndDate,
                    Frequency    = request.Entry.ProviderTypeConfigScheduler.Frequency,
                    ShortDesc    = request.Entry.ProviderTypeConfigScheduler.ShortDesc,
                    SkipTimes    = request.Entry.ProviderTypeConfigScheduler.SkipTimes
                };

                if (newEntry.N_ProviderTypeConfigScheduler.DayFrequency != null &&
                    newEntry.N_ProviderTypeConfigScheduler.DayFrequency > 0)
                {
                    var dates = GetDates
                                (
                        newEntry.N_ProviderTypeConfigScheduler.DayFrequency.Value,
                        newEntry.N_ProviderTypeConfigScheduler.StartDate,
                        newEntry.N_ProviderTypeConfigScheduler.EndDate
                                );

                    foreach (var date in dates)
                    {
                        newEntry.N_ProviderTypeConfigScheduler.N_ScheduleEntries.Add(new SchedulerEntry
                        {
                            Amount  = request.Entry.ProviderTypeConfigScheduler.Amount,
                            DueDate = date
                        });

                        newEntry.N_UserBills.Add(new UserBill
                        {
                            Amount  = request.Entry.ProviderTypeConfigScheduler.Amount,
                            DueDate = date,
                            Status  = BillPaymentStatus.Pending
                        });
                    }
                }
            }

            if (request.AutoSave)
            {
                return(BaseDbContext.SaveChangesAsync(cancellationToken)
                       .ContinueWith(result =>
                {
                    if (result.IsFaulted)
                    {
                        return new CreateResult <TrackBillBO>
                        {
                            IsCreated = false,
                            NewEntry = request.Entry,
                            Error = new LynxException(result.Exception)
                        };
                    }

                    return new CreateResult <TrackBillBO>
                    {
                        IsCreated = true,
                        NewEntry = Mapper.Map <TrackBillBO>(entityEntry.Entity)
                    };
                }));
            }
            else
            {
                var entry = Mapper.Map <TrackBillBO>(newEntry);

                entry.Bill         = Mapper.Map <BillBO>(bill);
                entry.BillProvider = Mapper.Map <BillProviderBO>(billProvider);

                retVal = Task.FromResult(new CreateResult <TrackBillBO>
                {
                    NewEntry = entry
                });
            }

            return(retVal);
        }