public IActionResult PutFlex(Guid?id, Flex flex) { if (id != flex.Id) { return(BadRequest()); } if (uow.FlexRepo.Exists(id)) { Flex flexOld = uow.FlexRepo.GetById(flex.Id); FlexType shiftSwap = uow.FlexTypeRepo.GetByName("Shift Swap"); FlexType shiftSwapRequest = uow.FlexTypeRepo.GetByName("Shift Swap Request"); if (flex.FlexTypeId == shiftSwap.Id) { Flex coWorkerFlex = uow.FlexRepo.GetById(flex.CoWorkerFlexId); if (flex.CoWorkerId != flexOld.CoWorkerId && coWorkerFlex.FlexTypeId == shiftSwapRequest.Id) { //Delete the old Co-Worker Flex Entry; Need to send an email to old Co-Worker about the updates. coWorkerFlex.IsActive = false; uow.FlexRepo.Put(coWorkerFlex, coWorkerFlex.Id); uow.SaveChanges(); quotaService.SendEmailsOnCoWorkerChange(coWorkerFlex); //Create another request for CoWorker Id Guid coWorkerFlexId = CreateCoWorkerFlex(flex); flex.CoWorkerFlexId = coWorkerFlexId; } } Status approved = uow.StatusRepo.GetByName("Approved"); if (flex.StatusId != flexOld.StatusId && flex.StatusId == approved.Id) { quotaService.SendApproveFlexEmails(flex); } uow.FlexRepo.Put(flex, flex.Id); uow.SaveChanges(); return(NoContent()); } return(NotFound()); }