Example #1
0
        public async Task <Guid> InsertOrUpdateApplication(ApplicationInDto model, Guid userId)
        {
            var actions = new List <Action <ApplicationInDto, Data.Context.Application> >();

            actions.Add((dto, ent) => ent.UserId = dto.UserId ?? userId);
            if (model.Id != null && model.Id != Guid.Empty)
            {
                await UpdateEndDateTime(model, userId);

                var application = await _baseLogic.Of <Data.Context.Application>().Base().FirstOrDefaultAsync(a => a.Id == model.Id);

                _ = _baseLogic.Of <Data.Context.Application>().Update(model.MapTo(application, actions));
                return(application.Id);
            }
            actions.Add((dto, ent) => ent.Status = ApplicationStatusEnum.Draft);
            var tmp = await _baseLogic.Of <Data.Context.Application>()
                      .Add(model.CreateMappedObject(actions));

            await GenerateRegNumber(tmp);

            await _applicationWorkflowLogic.CreateApplication(tmp, userId);

            return(tmp);
        }