public ResponseViewModel SaveProject(ProjectViewModel vm)
        {
            ResponseViewModel rvm = new ResponseViewModel();

            if (vm.ProjectID == 0)
            {
                if (vm.Name == null)
                {
                    rvm.AddError("Project name cannot be empty");
                }
                if (vm.Description == null)
                {
                    rvm.AddError("Project description cannot be empty");
                }


                if (rvm.ErrorCount > 0)
                {
                    return(rvm);
                }

                var existingProject = from rec in _projectList
                                      where rec.Name != null && rec.Name.Equals(vm.Name, StringComparison.InvariantCultureIgnoreCase)
                                      select rec;

                if (existingProject != null && existingProject.Count() > 0)
                {
                    rvm.AddError("A project with the same name already exists, please choose a different name.");
                }
                else
                {
                    vm.ProjectID = _projectList.Count + 1;
                    _projectList.Add(vm);
                    rvm.Data           = vm;
                    rvm.SuccessMessage = "Record Added successfully!!";
                }
            }
            else
            {
                var vmNew = _projectList.SingleOrDefault(q => q.ProjectID == vm.ProjectID);

                if (vmNew != null)
                {
                    vmNew.Name        = vm.Name;
                    vmNew.Description = vm.Description;
                    vmNew.StartDate   = vm.StartDate;
                    vmNew.EndDate     = vm.EndDate;

                    rvm.Data           = vmNew;
                    rvm.SuccessMessage = "Record Updated successfully!!";
                }
                else
                {
                    rvm.AddError("Couldn't find the project.");
                }
            }

            return(rvm);
        }
示例#2
0
        private Task HandleExceptionAsync(HttpContext httpContext, Exception exception)
        {
            ResponseViewModel responseError = new ResponseViewModel();

            if (exception is BaseException)
            {
                var ex = exception as BaseException;

                if (ex.Errors != null && ex.Errors.Any())
                {
                    foreach (var error in ex.Errors)
                    {
                        responseError.AddError(error.ErrorMessage, error.ErrorCode);
                    }
                }

                httpContext.Response.StatusCode = ex.StatusCode;
            }
            //else if (exception is HttpException)
            //{
            //    var ex = exception as HttpException;

            //    try
            //    {
            //        ErrorViewModel errorViewModel = JsonConvert.DeserializeObject<ErrorViewModel>(ex.Message);
            //        responseError.AddError(errorViewModel.Message, errorViewModel.Code);
            //        HttpContext.Response.StatusCode = 400;
            //    }
            //    catch (Exception ex)
            //    {
            //        responseError.AddError(ex.Message);
            //        HttpContext.Response.StatusCode = (int)ex.StatusCode;
            //    }
            //}
            else
            {
                _logger.LogError(exception, exception.Message);
                HttpContext.Response.StatusCode = 500;
                responseError.AddError("An unhandled exception has occured");
            }

            httpContext.Response.ContentType = "application/json";
            return(httpContext.Response.WriteAsync(JsonConvert.SerializeObject(responseError, Formatting.Indented)));
        }