public async Task <OperationResult> UpdateEmailRecipient( EmailRecipientUpdateModel requestModel) { //using (var transaction = await _dbContext.Database.BeginTransactionAsync()) // { try { var emailRecipient = await _dbContext.EmailRecipients .Include(x => x.TagRecipients) .FirstOrDefaultAsync(x => x.Id == requestModel.Id); if (emailRecipient == null) { //transaction.Rollback(); return(new OperationResult(false, _localizationService.GetString("EmailRecipientNotFound"))); } emailRecipient.Name = requestModel.Name; emailRecipient.Email = requestModel.Email.Replace(" ", ""); emailRecipient.UpdatedAt = DateTime.UtcNow; emailRecipient.UpdatedByUserId = _userService.UserId; // Tags var tagIds = emailRecipient.TagRecipients .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed) .Select(x => x.EmailTagId) .ToList(); var tagsForDelete = emailRecipient.TagRecipients .Where(x => !requestModel.TagsIds.Contains(x.EmailTagId)) .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed) .ToList(); var tagsForCreate = requestModel.TagsIds .Where(x => !tagIds.Contains(x)) .ToList(); foreach (var tagRecipient in tagsForDelete) { _dbContext.EmailTagRecipients.Remove(tagRecipient); } foreach (var tagId in tagsForCreate) { var emailTagRecipient = new EmailTagRecipient { CreatedByUserId = _userService.UserId, UpdatedByUserId = _userService.UserId, CreatedAt = DateTime.UtcNow, UpdatedAt = DateTime.UtcNow, EmailRecipientId = emailRecipient.Id, EmailTagId = tagId, Version = 1, }; await _dbContext.EmailTagRecipients.AddAsync(emailTagRecipient); } _dbContext.EmailRecipients.Update(emailRecipient); await _dbContext.SaveChangesAsync(); //transaction.Commit(); return(new OperationResult(true, _localizationService.GetString("EmailRecipientUpdatedSuccessfully"))); } catch (Exception e) { Console.WriteLine(e); _logger.LogError(e.Message); //transaction.Rollback(); return(new OperationResult(false, _localizationService.GetString("ErrorWhileUpdatingEmailRecipient"))); } //} }
public async Task <OperationResult> UpdateEmailTag([FromBody] EmailRecipientUpdateModel model) { return(await _emailRecipientsService.UpdateEmailRecipient(model)); }