Пример #1
0
        public async Task <ICommandResult> Handler(InsertConstructionCommandInput command)
        {
            var proprietario = _PPREP.GetById(command.OwnerId);
            var residente    = _RREP.GetByCREA(command.ResidentCrea);
            var fiscal1      = _RREP.GetByCREA(command.Fiscal1Crea);
            var fiscal2      = _RREP.GetByCREA(command.Fiscal2Crea);
            var address      = new Address(command.Street, command.District, command.Number);

            await Task.WhenAll(proprietario, residente, fiscal1, fiscal2);

            var construction = new Construction(command.Name, address, proprietario.Result, command.StartDate, command.FinalDate);
            var responsavel  = new Responsible();

            construction.OptionalInformation(command.Image, residente.Result, fiscal1.Result, fiscal2.Result);

            foreach (var item in command.creas)
            {
                responsavel = await _RREP.GetByCREA(item);

                construction.AddResponsible(responsavel);
            }

            if (construction.Invalid)
            {
                return(new CommandResult(_BuildResult.BuildResult(construction.Notifications)));
            }

            foreach (var item in construction.Responsibles)
            {
                _PAREP.Insert(item.Id, construction.Id);
            }

            _OREP.Insert(construction);

            return(new CommandResult(new string[] { "Projeto de Construction Cadastrada com Sucesso !" }));
        }