public IHttpActionResult CreateTestScript(TestScript model)
        {
            model.CreatedByUserId = base.UserId;
            if (model.StoryId <= 0)
            {
                ModelState.AddModelError("Story", "StoryId is required");
            }
            if (ModelState.IsValid)
            {
                var newScriptId = _repoFactory.TestScripts.CreateTestScript(model);
                if (newScriptId.HasValue)
                {
                    CreateTestScriptAssigneeMapping(newScriptId.Value, model.AssignedToDeveloperId, model.AssignedToDevManagerId, model.AssignedToBusinessAnalystId,
                                                    model.AssignedToBusinessStakeholderId, model.TestScriptStatus);

                    model.TestScriptId = newScriptId.Value;

                    if (!string.IsNullOrWhiteSpace(model.AssignedToDeveloperId) &&
                        !string.Equals(model.AssignedToDeveloperId, UserId, System.StringComparison.OrdinalIgnoreCase))
                    {
                        var receipientName = _cacheService.GetUserName(model.AssignedToDeveloperId);
                        if (!string.IsNullOrWhiteSpace(receipientName))
                        {
                            var receipient     = new MailUser(model.AssignedToDeveloperId, receipientName);
                            var actor          = new MailUser(UserId, DisplayName);
                            var testScriptLink = UrlFactory.GetTestScriptPageUrl(model.StoryId, model.TestScriptId);
                            _emailService.SendMail(receipient, Core.Enumerations.EmailType.TestScriptAssigned, actor, testScriptLink);
                        }
                    }

                    return(Created($"/api/test-scripts/{model.TestScriptId}", model));
                }
            }
            return(BadRequest(ModelState));
        }
        public IHttpActionResult UpdateTestScript(int testScriptId, TestScript model)
        {
            model.CreatedByUserId = base.UserId;
            if (testScriptId != model.TestScriptId)
            {
                return(NotFound());
            }
            if (model.StoryId <= 0)
            {
                ModelState.AddModelError("Story", "StoryId is required");
            }

            if (ModelState.IsValid)
            {
                var dbScript = _repoFactory.TestScripts.GetTestScripts(model.StoryId, testScriptId)?.FirstOrDefault();
                if (dbScript == null)
                {
                    return(BadRequest());
                }

                model.LastModifiedBy = base.UserId;
                model.LastModifiedOn = DateTime.Now;

                _repoFactory.TestScripts.UpdateTestScript(model);

                UpdateTestScriptAssigneeMapping(testScriptId, model.AssignedToDeveloperId, model.AssignedToDevManagerId, model.AssignedToBusinessAnalystId,
                                                model.AssignedToBusinessStakeholderId);

                if (!string.IsNullOrWhiteSpace(model.AssignedToDeveloperId) &&
                    !string.Equals(model.AssignedToDeveloperId, UserId, StringComparison.OrdinalIgnoreCase) &&
                    !string.Equals(dbScript.DeveloperId, model.AssignedToDeveloperId, StringComparison.OrdinalIgnoreCase))
                {
                    var receipientName = _cacheService.GetUserName(model.AssignedToDeveloperId);
                    if (!string.IsNullOrWhiteSpace(receipientName))
                    {
                        var receipient     = new MailUser(model.AssignedToDeveloperId, receipientName);
                        var actor          = new MailUser(UserId, DisplayName);
                        var testScriptLink = UrlFactory.GetTestScriptPageUrl(model.StoryId, model.TestScriptId);
                        _emailService.SendMail(receipient, Core.Enumerations.EmailType.TestScriptAssigned, actor, testScriptLink);
                    }
                }
                var approveStatusId = GetTestScriptApproveStatusId();
                if (dbScript.TestScriptStatus != approveStatusId && model.TestScriptStatus == approveStatusId &&
                    !string.IsNullOrWhiteSpace(model.AssignedToDeveloperId) &&
                    !string.Equals(model.AssignedToDeveloperId, UserId, StringComparison.OrdinalIgnoreCase))
                {
                    var receipientName = _cacheService.GetUserName(model.AssignedToDeveloperId);
                    if (!string.IsNullOrWhiteSpace(receipientName))
                    {
                        var receipient     = new MailUser(model.AssignedToDeveloperId, receipientName);
                        var actor          = new MailUser(UserId, DisplayName);
                        var testScriptLink = UrlFactory.GetTestScriptPageUrl(model.StoryId, model.TestScriptId);
                        _emailService.SendMail(receipient, Core.Enumerations.EmailType.TestScriptApproved, actor, testScriptLink);
                    }
                }

                return(Ok());
            }
            return(BadRequest(ModelState));
        }