public async Task <OperationResult> Create([FromBody] PlanningCreateModel createModel) { return(await _planningService.Create(createModel)); }
public async Task <OperationResult> Create(PlanningCreateModel model) { //await using var transaction = await _dbContext.Database.BeginTransactionAsync(); var sdkCore = await _coreService.GetCore(); await using var sdkDbContext = sdkCore.DbContextHelper.GetDbContext(); try { var tagIds = new List <int>(); tagIds.AddRange(model.TagsIds); var localeString = await _userService.GetCurrentUserLocale(); if (string.IsNullOrEmpty(localeString)) { return(new OperationResult( false, _itemsPlanningLocalizationService.GetString("LocaleDoesNotExist"))); } var language = sdkDbContext.Languages.Single(x => x.LanguageCode == localeString); if (model.BoundEform == null) { return(new OperationResult( false, _itemsPlanningLocalizationService.GetString("InfoAboutEformIsNull"))); } var template = await _coreService.GetCore().Result.TemplateItemRead(model.BoundEform.RelatedEFormId, language); if (template == null) { return(new OperationResult( false, _itemsPlanningLocalizationService.GetString("EformNotFound"))); } if (model.Folder == null) { return(new OperationResult( false, _itemsPlanningLocalizationService.GetString("InfoAboutFolderIsNull"))); } var sdkFolder = await sdkDbContext.Folders .Include(x => x.Parent) .FirstOrDefaultAsync(x => x.Id == model.Folder.EFormSdkFolderId); if (sdkFolder == null) { return(new OperationResult( false, _itemsPlanningLocalizationService.GetString("FolderNotFound"))); } var planning = new Planning { Description = model.Description, BuildYear = model.BuildYear, Type = model.Type, LocationCode = model.LocationCode, CreatedByUserId = _userService.UserId, CreatedAt = DateTime.UtcNow, IsLocked = false, IsEditable = true, IsHidden = false, RepeatEvery = model.Reiteration.RepeatEvery, RepeatUntil = model.Reiteration.RepeatUntil, RepeatType = model.Reiteration.RepeatType, DayOfWeek = model.Reiteration.DayOfWeek, DayOfMonth = model.Reiteration.DayOfMonth, Enabled = true, RelatedEFormId = model.BoundEform.RelatedEFormId, RelatedEFormName = template.Label, SdkFolderName = sdkFolder.Name, SdkFolderId = model.Folder.EFormSdkFolderId, PlanningsTags = new List <PlanningsTags>(), DaysBeforeRedeploymentPushMessageRepeat = model.Reiteration.PushMessageEnabled, DaysBeforeRedeploymentPushMessage = model.Reiteration.DaysBeforeRedeploymentPushMessage, PushMessageOnDeployment = model.Reiteration.PushMessageOnDeployment, StartDate = model.Reiteration.StartDate ?? DateTime.UtcNow }; foreach (var tagId in tagIds) { planning.PlanningsTags.Add( new PlanningsTags { CreatedByUserId = _userService.UserId, UpdatedByUserId = _userService.UserId, PlanningTagId = tagId }); } await planning.Create(_dbContext); var languages = await _dbContext.Languages.ToListAsync(); foreach (var translation in model.TranslationsName) { var languageId = languages.Where(x => x.Name == translation.Language || x.LanguageCode == translation.LocaleName) .Select(x => x.Id) .FirstOrDefault(); if (languageId == default) { return(new OperationResult( true, _itemsPlanningLocalizationService.GetString("LocaleDoesNotExist"))); } var planningNameTranslations = new PlanningNameTranslation() { LanguageId = languageId, PlanningId = planning.Id, Name = translation.Name, CreatedByUserId = _userService.UserId, UpdatedByUserId = _userService.UserId }; await planningNameTranslations.Create(_dbContext); } //await transaction.CommitAsync(); return(new OperationResult( true, _itemsPlanningLocalizationService.GetString("ListCreatedSuccessfully"))); } catch (Exception e) { //await transaction.RollbackAsync(); Trace.TraceError(e.Message); return(new OperationResult(false, _itemsPlanningLocalizationService.GetString("ErrorWhileCreatingList"))); } }