public async Task <VehicleMakesDto> GetVehicleMakes(int siteId)
 {
     using (var uow = UowManager.CurrentOrCreateNew(true))
     {
         return(new VehicleMakesDto(await((IVehicleDomainService)DomainService).GetMakes(siteId)));
     }
 }
        public async Task <PaginatedResponseDto <ResourceDto> > GetAllAsync(ResourcePaginatedRequestDto request)
        {
            using (var uow = UowManager.Begin())
                using (UowManager.Current.OverrideCurrentLanguageCode(request.LanguageCode ?? Session.LanguageCode))
                {
                    var options = request.ResolveRepositoryGetAllProjectedOptions(ResourceDto.Projection);
                    var dtos    = await _resourceRepository.GetAllListAsync(
                        x =>
                        (!request.WithId.HasValue || (request.WithId.HasValue && request.WithId.Value == x.Id)) &&
                        (string.IsNullOrEmpty(request.WithKey) || (!string.IsNullOrEmpty(request.WithKey) && request.WithKey == x.Key)) &&
                        (!request.MustBePublic.HasValue || (request.MustBePublic.HasValue && request.MustBePublic == !x.ResourceGroup.IsPrivate))
                        , options
                        , out long total);

                    if (dtos is null)
                    {
                        throw new AppException();
                    }

                    return(new PaginatedResponseDto <ResourceDto>(dtos)
                    {
                        PageIndex = request.PageIndex,
                        PageSize = request.PageSize,
                        Total = total
                    });
                }
        }
Beispiel #3
0
        public async Task <GetAllResponse <InvitationDto> > GetAllCreatedInvitationsAsync(int id, uint page = 0, uint pageSize = 0, string sorting = null)
        {
            Expression <Func <Invitation, bool> > filter = (entity) => entity.InvitatorId == id;
            int totalCount;
            IList <Invitation> entities;
            int skip = (int)(page * pageSize);
            int take = (int)pageSize;

            using (var uow = UowManager.CurrentOrCreateNew(true))
            {
                entities = await InvitationDomainService.RetrieveAllAsync(filter, sorting, skip, take);

                totalCount = take > 0 || skip > 0 && (entities.Count == take || skip != 0) ?
                             await InvitationDomainService.GetTotalCountAsync(filter) :
                             entities.Count;
            }
            List <InvitationDto> entityDtos = new List <InvitationDto>(entities.Count);

            foreach (Invitation entity in entities)
            {
                InvitationDto entityDto = new InvitationDto();
                entityDto.MapFromEntity(entity);
                entityDto.NormalizeAsResponse();
                entityDtos.Add(entityDto);
            }
            return(new GetAllResponse <InvitationDto>(entityDtos, totalCount));
        }
Beispiel #4
0
        public async Task <ImportVehiclesShapshot> ImportVehiclesAsync(int siteId)
        {
            string                      message;
            ImportStatusEnum            status;
            ImportVehiclesForSiteResult importResult;
            Stopwatch                   stopWatch = new Stopwatch();

            stopWatch.Start();
            try
            {
                using (var uow = UowManager.CurrentOrCreateNew(true))
                {
                    importResult = await((ISiteDomainService)DomainService).ImportVehiclesAsync(siteId);
                    await uow.CompleteAsync();
                }
                status  = ImportStatusEnum.Success;
                message = null;
            }
            catch (Exception ex)
            {
                status       = ImportStatusEnum.Failed;
                message      = ex.Message;
                importResult = null;
            }
            stopWatch.Stop();
            ImportVehiclesShapshot importSnapshot = new ImportVehiclesShapshot(
                stopWatch.Elapsed, status, message,
                new List <ImportVehiclesForSiteResultDto>()
            {
                new ImportVehiclesForSiteResultDto(importResult)
            });

            return(importSnapshot);
        }
Beispiel #5
0
        public async Task RegisterAsync([FromBody] UserFullDto request, string invitationCode)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }
            request.NormalizeAsRequest();
            using (var uow = UowManager.CurrentOrCreateNew(true))
            {
                if (!(await((IUserDomainService)DomainService).IsUsernameValidAsync(request.Username)))
                {
                    throw new ValidateEntityPropertiesException(nameof(request.Username));
                }
                Invitation invitation = await InvitationDomainService.UseInvitationAsync(invitationCode);

                User newUser = request.MapToEntity();
                newUser.MaxSitesCount = invitation.AvailableSitesCount;
                newUser.UserRoles     = new List <UserRole>()
                {
                    new UserRole()
                    {
                        User = newUser, RoleId = invitation.RoleId
                    }
                };
                await DomainService.CreateAsync(newUser);

                await uow.CompleteAsync();
            }
        }
Beispiel #6
0
        protected virtual async Task <ImportVehiclesShapshot> InnerImportVehiclesAsync()
        {
            string           message;
            ImportStatusEnum status;
            IEnumerable <ImportVehiclesForSiteResult> importResults;
            Stopwatch stopWatch = new Stopwatch();

            stopWatch.Start();
            try
            {
                using (var uow = UowManager.CurrentOrCreateNew(true))
                {
                    importResults = await((ISiteDomainService)DomainService).ImportVehiclesAsync();
                    await uow.CompleteAsync();
                }
                status  = ImportStatusEnum.Success;
                message = null;
            }
            catch (Exception ex)
            {
                status        = ImportStatusEnum.Failed;
                message       = ex.Message;
                importResults = null;
            }
            stopWatch.Stop();
            ImportVehiclesShapshot importSnapshot = new ImportVehiclesShapshot(
                stopWatch.Elapsed, status, message,
                importResults.Select(importResult => new ImportVehiclesForSiteResultDto(importResult)));

            // do not await this
            LogImportSnapshot(importSnapshot);
            return(importSnapshot);
        }
Beispiel #7
0
 public async Task PatchIsReachedByManagerAsync([FromBody] PatchBoolPropertyRequest request, int id)
 {
     using (var uow = UowManager.CurrentOrCreateNew(true))
     {
         await((ILeadDomainService)DomainService).ChangeIsReachedByManagerAsync(id, request.Value);
         await uow.CompleteAsync();
     }
 }
 protected virtual async Task SwapOrdersAsync(TPrimaryKey key1, TPrimaryKey key2)
 {
     using (var uow = UowManager.CurrentOrCreateNew(true))
     {
         await((IEntityExtendedDomainService <TEntity, TPrimaryKey>)DomainService).SwapOrdersAsync(key1, key2);
         await uow.CompleteAsync();
     }
 }
 protected virtual async Task ChangeOrderAsync(TPrimaryKey id, int newValue)
 {
     using (var uow = UowManager.CurrentOrCreateNew(true))
     {
         await((IEntityExtendedDomainService <TEntity, TPrimaryKey>)DomainService).ChangeOrderAsync(id, newValue);
         await uow.CompleteAsync();
     }
 }
Beispiel #10
0
 public async Task ChangeContactsAsync(int id, [FromBody] ChangeContactsRequest request)
 {
     using (var uow = UowManager.CurrentOrCreateNew(true))
     {
         await((ISiteDomainService)DomainService).ChangeContactsAsync(id, request.Value);
         await uow.CompleteAsync();
     }
 }
 public async Task ChangeIsResolvedAsync(int id, [FromBody] PatchBoolPropertyRequest request)
 {
     using (var uow = UowManager.CurrentOrCreateNew(true))
     {
         await((IWidgetEventDomainService)DomainService).ChangeIsResolvedAsync(id, request.Value);
         await uow.CompleteAsync();
     }
 }
Beispiel #12
0
 public async Task PatchPersonalInfo([FromBody] PatchPersonalInfoRequest request, int id)
 {
     using (var uow = UowManager.CurrentOrCreateNew(true))
     {
         await((IUserDomainService)DomainService)
         .UpdatePersonalInfoAsync(id, request.FirstName, request.SecondName, request.Email, request.PhoneNumber);
         await uow.CompleteAsync();
     }
 }
Beispiel #13
0
 public async Task PatchPassword([FromBody] PatchAvatarRequest request, int id)
 {
     using (var uow = UowManager.CurrentOrCreateNew(true))
     {
         await((IUserDomainService)DomainService)
         .UpdateAvatarAsync(id, request.NewAvatarUrl);
         await uow.CompleteAsync();
     }
 }
Beispiel #14
0
        public async Task DeleteInvitationAsync(int id)
        {
            using (var uow = UowManager.CurrentOrCreateNew(true))
            {
                await InvitationDomainService.DeleteAsync(id);

                await uow.CompleteAsync();
            }
        }
Beispiel #15
0
        /// <summary>
        /// Is used as inner delete method for entity
        /// </summary>
        /// <param name="id">entity id</param>
        /// <returns>deletion task</returns>
        protected virtual async Task InnerDeleteAsync(TPrimaryKey id)
        {
            using (var uow = UowManager.CurrentOrCreateNew(true))
            {
                await DomainService.DeleteAsync(id);

                await uow.CompleteAsync();
            }
        }
Beispiel #16
0
        public async Task <SiteWeekSchedule> GetWeekScheduleAsync(int id)
        {
            SiteWeekSchedule schedule;

            using (var uow = UowManager.CurrentOrCreateNew(true))
            {
                schedule = new SiteWeekSchedule(id, await((ISiteDomainService)DomainService).RetrieveWeekSchedule(id));
            }
            return(schedule);
        }
Beispiel #17
0
        public async Task <bool> ValidateCredentialsAsync(User user, string password)
        {
            using (var uow = UowManager.Begin())
            {
                UowManager.Current.DisableMayHaveTenantBaseFilter();
                UowManager.Current.DisableMustHaveTenantBaseFilter();

                return(await _userManager.CheckPasswordAsync(user, password));
            }
        }
Beispiel #18
0
        public async Task <User> FindByUsernameAsync(string username)
        {
            using (var uow = UowManager.Begin())
            {
                UowManager.Current.DisableMayHaveTenantBaseFilter();
                UowManager.Current.DisableMustHaveTenantBaseFilter();

                return(await _userManager.FindByNameAsync(username));
            }
        }
Beispiel #19
0
        public Task SignInAsync(User user, AuthenticationProperties properties, string authenticationMethod = null)
        {
            using (var uow = UowManager.Begin())
            {
                UowManager.Current.DisableMayHaveTenantBaseFilter();
                UowManager.Current.DisableMustHaveTenantBaseFilter();

                return(_signInManager.SignInAsync(user, properties, authenticationMethod));
            }
        }
Beispiel #20
0
 public async Task <IEnumerable <VehicleModelInfoDto> > GetVehicleModels(int siteId, string make, string sorting = "Name asc")
 {
     using (var uow = UowManager.CurrentOrCreateNew(true))
     {
         return((await((IVehicleDomainService)DomainService)
                 .GetModels(siteId, make))
                .Select(vehicleModelInfo => new VehicleModelInfoDto(vehicleModelInfo))
                .AsQueryable()
                .OrderBy(sorting));
     }
 }
Beispiel #21
0
        public async Task <int> CreateArtwork(ArtworkCreateInputDto inputDto)
        {
            using (var uow = UowManager.Begin())
            {
                try
                {
                    var hasItem = inputDto.ItemIds != null && inputDto.ItemIds.Any();

                    List <ArtworkItem> items = new List <ArtworkItem>();
                    if (hasItem)
                    {
                        items = _artworkItems.GetList(i => inputDto.ItemIds.Contains(i.Id));
                        var notExistItems = inputDto.ItemIds.Except(items.Select(i => i.Id)).ToList();
                        if (notExistItems.Any())
                        {
                            throw new Exception($"these item are not exist: {string.Join(",", notExistItems.Select(i => $"[{i}]"))}");
                        }
                    }

                    var artworkCreateResult = await _artworks.InsertAsync(new Artwork
                    {
                        Name           = inputDto.Name,
                        Description    = inputDto.Description,
                        CoverImage     = inputDto.CoverImage,
                        CompletionTime = inputDto.CompletionTime,
                        OnTop          = inputDto.OnTop,
                    });

                    var id = artworkCreateResult.Id;

                    if (hasItem)
                    {
                        for (var i = 0; i < items.Count; i++)
                        {
                            var item = items[i];
                            item.ArtworkId = id;
                            item.Seq       = i;
                        }

                        await _artworkItems.UpdateAsync(items);
                    }

                    uow.Commit();
                    return(id);
                }
                catch (Exception ex)
                {
                    uow.Rollback();
                    throw new Exception("failed to save");
                }
            }
        }
Beispiel #22
0
        protected void LogContextInfo(IMessageHandlerContext context)
        {
            if (AbpNServiceBusModuleConfig.Debug)
            {
                Logger.DebugFormat("Message: {0}", context.MessageId);
                Logger.DebugFormat("Message/AbpSession: {0}/{1}", context.MessageId, AbpSession.GetHashCode());
                Logger.DebugFormat("Message/UowManager: {0}/{1}", context.MessageId, UowManager.GetHashCode());

                if (UowManager.Current != null)
                {
                    Logger.DebugFormat("Message/UnitOfWork: {0}/{1}", context.MessageId, UowManager.Current.GetHashCode());
                }
            }
        }
Beispiel #23
0
        /// <summary>
        /// Is used as inner get method for entity (returns full version of entity)
        /// </summary>
        /// <param name="id">entity id</param>
        /// <returns>entity as result of task</returns>
        protected virtual async Task <TEntityFullDto> InnerGetAsync(TPrimaryKey id)
        {
            TEntity entity;

            using (var uow = UowManager.CurrentOrCreateNew(true))
            {
                entity = await DomainService.RetrieveAsync(id);
            }
            TEntityFullDto response = new TEntityFullDto();

            response.MapFromEntity(entity);
            response.NormalizeAsResponse();
            return(response);
        }
Beispiel #24
0
        /// <summary>
        /// Is used to retrieve all entities via filters and sorting as paged result
        /// </summary>
        /// <param name="filter">filter</param>
        /// <param name="sorting">sorting as string like "prop1 asc, prop2 desc"</param>
        /// <param name="page">page number (starts from 0)</param>
        /// <param name="pageSize">page size (count of elements on the page)</param>
        /// <returns>object with retrieved items and total count</returns>
        protected virtual async Task <GetAllResponse <TEntityDto> > InnerGetAllAsync(Expression <Func <TEntity, bool> > filter, string sorting, uint page, uint pageSize)
        {
            int             totalCount;
            IList <TEntity> entities;
            int             skip = (int)(page * pageSize);
            int             take = (int)pageSize;

            using (var uow = UowManager.CurrentOrCreateNew(true))
            {
                entities = await DomainService.RetrieveAllAsync(filter, sorting, skip, take);

                totalCount = take > 0 || skip > 0 && (entities.Count == take || skip != 0) ? await DomainService.GetTotalCountAsync(filter) : entities.Count;
            }
            return(new GetAllResponse <TEntityDto>(MapEntitiesToDtos <TEntity, TEntityDto>(entities), totalCount));
        }
Beispiel #25
0
        /// <summary>
        /// Is used as inner update method for entity (updates entity and returns it back via <see cref="InnerGetAsync(TPrimaryKey)"/>)
        /// </summary>
        /// <param name="request">request</param>
        /// <returns>updated entity as result of task</returns>
        /// <exception cref="ArgumentNullException">Thrown when request is null</exception>
        protected virtual async Task <TEntityFullDto> InnerUpdateAsync(TEntityFullDto request)
        {
            if (request == null)
            {
                throw new ArgumentNullException("Request");
            }
            request.NormalizeAsRequest();
            using (var uow = UowManager.CurrentOrCreateNew(true))
            {
                await DomainService.UpdateAsync(request.MapToEntity());

                await uow.CompleteAsync();
            }
            return(await InnerGetAsync(request.Id));
        }
        public async Task CreateAsync([FromBody] WidgetEventFullDto request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            request.NormalizeAsRequest();

            using (var uow = UowManager.CurrentOrCreateNew(true))
            {
                await DomainService.CreateAsync(request.MapToEntity());

                await uow.CompleteAsync();
            }
        }
Beispiel #27
0
 public async Task PatchPassword([FromBody] PatchPasswordRequest request, int id)
 {
     try
     {
         using (var uow = UowManager.CurrentOrCreateNew(true))
         {
             await((IUserDomainService)DomainService)
             .UpdatePasswordAsync(id, request.OldPassword, request.NewPassword);
             await uow.CompleteAsync();
         }
     }
     catch (PasswordIsNotValidException)
     {
         Response.StatusCode = (int)HttpStatusCode.Unauthorized;
     }
 }
Beispiel #28
0
        public async Task <bool> ModifyArtwork(ArtworkModifyInputDto inputDto)
        {
            if (!TryGetEntityById <Artwork>(inputDto.Id, out var artwork))
            {
                throw new Exception("artwork not exist");
            }

            using (var uow = UowManager.Begin())
            {
                try
                {
                    artwork.Name           = inputDto.Name;
                    artwork.Description    = inputDto.Description;
                    artwork.CompletionTime = inputDto.CompletionTime;
                    artwork.OnTop          = inputDto.OnTop;
                    artwork.CoverImage     = inputDto.CoverImage;

                    await _artworks.UpdateAsync(artwork);

                    if (inputDto.ItemIds == null)
                    {
                        inputDto.ItemIds = new int[] { };
                    }

                    // delete old items
                    _artworkItems.Update(i => i.ArtworkId == inputDto.Id, i => i.ArtworkId = 0);
                    // add new items
                    var items = _artworkItems.GetList(i => inputDto.ItemIds.Contains(i.Id));
                    for (var i = 0; i < items.Count; i++)
                    {
                        var item = items[i];
                        item.ArtworkId = inputDto.Id;
                        item.Seq       = inputDto.ItemIds.ToList().IndexOf(item.Id);
                    }
                    await _artworkItems.UpdateAsync(items);

                    uow.Commit();
                    return(true);
                }
                catch (Exception ex)
                {
                    uow.Rollback();
                    throw new Exception("failed to modify");
                }
            }
        }
Beispiel #29
0
        public async Task <string> ExportDataToExcelAsync([FromBody] LeadGetAllRequest request, uint?page = null, uint?pageSize = null)
        {
            Uri      fileUrl;
            TimeSpan timeZoneOffset = TimeSpan.Zero;
            string   fileName       = $"TestDrive-Leads-{DateTime.UtcNow.FormatUtcDateTimeToUserFriendlyString(timeZoneOffset, "yyyyMMddHHmmss")}";
            string   worksheetsName = "leads";

            using (var uow = UowManager.CurrentOrCreateNew(true))
            {
                ExcelExportSettings <Lead> settings = new ExcelExportSettings <Lead>(
                    fileName, worksheetsName,
                    DomainService, ContentManager,
                    ExcelExportLeadOptionsProvider.GetEntityOptions((r) => r.UseByDefault, (key) => key, timeZoneOffset),
                    BuildRetrieveManyFilter(request), request.Sorting, page ?? 0 * pageSize ?? 0, pageSize);
                fileUrl = await ExcelExportService <Lead> .ExportDataAsync(settings);
            }
            return(fileUrl.ToString());
        }
Beispiel #30
0
        /// <summary>
        /// Is used as inner create method for entity (creates entity and returns it back via <see cref="InnerGetAsync(TPrimaryKey)"/>)
        /// </summary>
        /// <param name="request">request</param>
        /// <returns>created entity as result of task</returns>
        /// <exception cref="ArgumentNullException">Thrown when request is null</exception>
        protected virtual async Task <TEntityFullDto> InnerCreateAsync(TEntityFullDto request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }
            request.NormalizeAsRequest();
            TPrimaryKey entityId;

            using (var uow = UowManager.CurrentOrCreateNew(true))
            {
                TEntity stubEntity = await DomainService.CreateAsync(request.MapToEntity());

                await uow.CompleteAsync();

                entityId = stubEntity.Id;
            }
            return(await InnerGetAsync(entityId));
        }