protected override async Task <IProcessResult <MiscExpenditure> > Handle(UpdateMiscExpenditureMessage msg) { var existing = await _repo.FindByExternalId(msg.ExternalExpenditureId); if (existing == null || msg.ExternalExpenditureId == default(Guid)) { existing = new DataAccess.EF.MiscExpenditure(); existing.ExternalId = Guid.NewGuid(); existing.Id = 0; existing.LastModified = DateTimeOffset.Now; existing.WeekId = WeekDTO.CreateWithWeekContaining(msg.Model.ExpensedOn).WeekId.Value; } var updateMsg = UpdateMessage.CreateFrom(msg, existing); var mapped = _mapper.Map <DataAccess.EF.MiscExpenditure>(updateMsg); var saved = await _repo.SaveEntity(mapped); return(Success(_mapper.Map <MiscExpenditure>(saved))); }