Пример #1
0
        public BookResponseViewModel Add(BookRequestViewModel book)
        {
            var bookEntity = _mapper.Map <Book>(book);
            var result     = _bookBusiness.Add(bookEntity);

            return(_mapper.Map <BookResponseViewModel>(result));
        }
Пример #2
0
        public async Task <IActionResult> Post([FromBody] BookRequestViewModel book)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest("Invalid input"));
            }

            return(Ok(await _bookService.Create(_mapper.Map <BookDTO>(book))));
        }
Пример #3
0
        public BookResponseViewModel Update(Guid key, BookRequestViewModel book)
        {
            var bookConsult = _bookBusiness.GetByKey(key);
            var bookEntity  = _mapper.Map <Book>(book);

            bookEntity.UniqueKey = key;
            bookEntity.Id        = bookConsult.Id;

            return(_mapper.Map <BookResponseViewModel>(_bookBusiness.Update(bookEntity)));
        }
Пример #4
0
        public ActionResult <string> Put([FromHeader] Guid key, [FromBody] BookRequestViewModel book)
        {
            try
            {
                _logger.LogInformation("Atualização livro");
                var result = _bookServices.Update(key, book);
                if (result.ValidationResult.Errors.Any())
                {
                    return(AddValidationErrors(result.ValidationResult.Errors));
                }

                return(Ok(Labels.Success));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, ex.Message);
                return(new StatusCodeResult(500));
            }
        }
Пример #5
0
        public ActionResult <string> Post([FromBody] BookRequestViewModel book)
        {
            try
            {
                _logger.LogInformation("Add a new book");
                var result = _bookServices.Add(book);
                if (result.ValidationResult.Errors.Any())
                {
                    return(AddValidationErrors(result.ValidationResult.Errors));
                }

                return(Json(Labels.Success));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, ex.Message);
                return(new StatusCodeResult(500));
            }
        }
Пример #6
0
        public JsonNetResult BookRequest(BookRequestViewModel model, string button)
        {
            //if (button.Equals("AddNew", StringComparison.OrdinalIgnoreCase))
            //{
            //    if (model.BookRequestDetails == null)
            //        model.BookRequestDetails = new List<BookRequestDetail>();
            //    int Id = model.BookRequestDetails.Max(m => m.Id) + 1;
            //    model.BookRequestDetails.Add(new BookRequestDetail { Id = Id });
            //}
            //else if (button.StartsWith("DeleteRow", StringComparison.OrdinalIgnoreCase))
            //{
            //    int Id = Convert.ToInt32(button.Split('_')[1]);
            //    model.BookRequestDetails = model.BookRequestDetails.Where(w => w.Id != Id).ToList();
            //}

            try
            {
                string userId = User.Identity.GetUserId();
                //model.Student = this._studentService.GetStudentByUserId(userId);
                if (!ModelState.IsValid)
                {
                    JsonResponse response = new JsonResponse {
                        Messages = new List <string>(), MsgType = MessageType.Validations
                    };
                    foreach (ModelState modelState in ViewData.ModelState.Values)
                    {
                        foreach (ModelError error in modelState.Errors)
                        {
                            response.Messages.Add(error.ErrorMessage);
                        }
                    }
                    return(JsonNet(response, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    var bookRequestDetails = model.BookRequestDetails.Where(w => !string.IsNullOrEmpty(w.Subject) && !string.IsNullOrEmpty(w.Title) &&
                                                                            !string.IsNullOrEmpty(w.Publication) && !string.IsNullOrEmpty(w.Author)).ToList();

                    var partialBookRequests = model.BookRequestDetails.Where(w => !bookRequestDetails.Contains(w) && (!string.IsNullOrEmpty(w.Subject) || !string.IsNullOrEmpty(w.Title) ||
                                                                                                                      !string.IsNullOrEmpty(w.Publication) || !string.IsNullOrEmpty(w.Author))).ToList();

                    var messages = new List <string>();

                    if (string.Equals(model.College.Name.Trim(), "Other", StringComparison.OrdinalIgnoreCase))
                    {
                        messages.Add("College name is not allowed.");
                    }
                    if (string.Equals(model.Branch.Name.Trim(), "Other", StringComparison.OrdinalIgnoreCase))
                    {
                        messages.Add("Branch name is not allowed");
                    }

                    if (partialBookRequests.Any())
                    {
                        for (int i = 0; i < partialBookRequests.Count; i++)
                        {
                            if (string.IsNullOrEmpty(partialBookRequests[i].Subject))
                            {
                                messages.Add(string.Format("Subject required for Sr.no. {0}.", partialBookRequests[i].Id));
                            }
                            if (string.IsNullOrEmpty(partialBookRequests[i].Title))
                            {
                                messages.Add(string.Format("Title required in Sr.no. {0}.", partialBookRequests[i].Id));
                            }
                            if (string.IsNullOrEmpty(partialBookRequests[i].Publication))
                            {
                                messages.Add(string.Format("Publication required in Sr.no. {0}.", partialBookRequests[i].Id));
                            }
                            if (string.IsNullOrEmpty(partialBookRequests[i].Author))
                            {
                                messages.Add(string.Format("Author required in Sr.no. {0}.", partialBookRequests[i].Id));
                            }
                        }
                    }
                    else if (!bookRequestDetails.Any())
                    {
                        messages.Add("Atleast one text book request is required.");
                    }

                    if (messages.Any())
                    {
                        return(JsonNet(new JsonResponse {
                            MsgType = MessageType.Validations, Messages = messages
                        }, JsonRequestBehavior.AllowGet));
                    }
                    using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions {
                        IsolationLevel = IsolationLevel.ReadCommitted
                    }))                                                                                                                                                  // Testing Required...
                    {
                        if (model.College.Id <= 0)
                        {
                            model.College.CreatedOn = DateTime.Now;
                            model.College.Id        = this._collegeBranchService.InsertCollege(model.College);
                        }

                        if (model.Branch.Id <= 0)
                        {
                            model.Branch.CreatedOn = DateTime.Now;
                            model.Branch.Id        = this._collegeBranchService.InsertBranch(model.Branch);
                        }

                        //model.Student.UserId = userId;
                        if (model.Student.Id > 0)
                        {
                            model.Student.UpdatedBy = userId;
                            model.Student.UpdatedOn = DateTime.Now;
                            //model.Student.EnrollmentNo = String.Format("{0}-{1}-{2}-A", DateTime.Now.ToString("yy"), model.Branch.Name.Substring(0, 2), model.Student.Id.ToString("0000"));
                            //this._studentService.Update(model.Student); // Student can not update. Need to request admin to update info
                        }
                        else
                        {
                            model.Student.CreatedBy    = userId;
                            model.Student.CreatedOn    = DateTime.Now;
                            model.Student.EnrollmentNo = "E";
                            model.Student.Id           = this._studentService.Insert(model.Student);
                            string[] branchNameArray = model.Branch.Name.Split(new char[] { ' ' });
                            if (branchNameArray.Length >= 2)
                            {
                                model.Student.EnrollmentNo = String.Format("{0}-{1}{2}-{3}-A", DateTime.Now.ToString("yy"), branchNameArray[0][0].ToString().ToUpper(), branchNameArray[1][0].ToString().ToUpper(), model.Student.Id.ToString("0000"));
                            }
                            else
                            {
                                model.Student.EnrollmentNo = String.Format("{0}-{1}-{2}-A", DateTime.Now.ToString("yy"), model.Branch.Name.Substring(0, 2).ToUpper(), model.Student.Id.ToString("0000"));
                            }
                            this._studentService.Update(model.Student); // Student can not update. Need to request admin if require any change
                        }

                        model.BookRequest.StudentId   = model.Student.Id;
                        model.BookRequest.CollegeId   = model.College.Id;
                        model.BookRequest.BranchId    = model.Branch.Id;
                        model.BookRequest.Subject     = "NA";
                        model.BookRequest.RequestDate = DateTime.Now;
                        model.BookRequest.CreatedBy   = userId;
                        model.BookRequest.CreatedOn   = DateTime.Now;
                        model.BookRequest.Id          = this._bookRequestService.InsertBookRequest(model.BookRequest);

                        foreach (var item in bookRequestDetails)
                        {
                            int bookId = 0;
                            int.TryParse(item.BookId, out bookId);
                            item.BookId = Convert.ToString(bookId);

                            Book existingBook = null;
                            if (bookId > 0)
                            {
                                existingBook = this._bookService.GetBookById(bookId);
                            }

                            if (existingBook != null)
                            {
                                item.Title = existingBook.Title;
                                if ((!existingBook.Author.Equals(item.Author, StringComparison.OrdinalIgnoreCase) || !existingBook.Publication.Equals(item.Publication, StringComparison.OrdinalIgnoreCase)))
                                {
                                    bookId      = 0;
                                    item.BookId = "0";
                                }
                            }

                            if (bookId <= 0)
                            {
                                var book = new Book
                                {
                                    Title            = item.Title,
                                    Author           = item.Author,
                                    Subject          = item.Subject,
                                    Publication      = item.Publication,
                                    IsNewRequest     = true,
                                    TotalBooks       = 0,
                                    ApprovedBooks    = 0,
                                    NewApprovedBooks = 0,
                                    IssuedBooks      = 0,
                                    TornBooks        = 0,
                                    AvailableBooks   = 0
                                };
                                bookId      = this._bookService.Insert(book);
                                item.BookId = Convert.ToString(bookId);
                            }

                            var bookRequestDetail = new BookRequestDetail
                            {
                                RequestId = model.BookRequest.Id,
                                BookId    = bookId,
                                Status    = (int)BookRequestStatus.Pending,
                                Subject   = item.Subject
                            };

                            item.Id = this._bookRequestService.InsertBookRequestDetail(bookRequestDetail);
                            this._historyService.InsertBookRequestHistory(new BookRequestHistory {
                                BookRequestDetailId = item.Id, Status = (int)BookRequestStatus.Pending, CreatedBy = userId, CreatedOn = DateTime.Now
                            });
                        }
                        scope.Complete();
                    }

                    var emailText = System.IO.File.ReadAllText(Server.MapPath("~/App_Data/EmailTemplates/RequestReceived.html"));
                    emailText = emailText.Replace("{{BASE_URL}}", _webHelper.GetStoreHost(false));
                    System.Web.UI.WebControls.Table tbl = new System.Web.UI.WebControls.Table();
                    tbl.BorderColor = Color.Black;
                    tbl.BorderStyle = System.Web.UI.WebControls.BorderStyle.Solid;
                    tbl.BorderWidth = System.Web.UI.WebControls.Unit.Pixel(1);
                    tbl.Width       = System.Web.UI.WebControls.Unit.Percentage(100);
                    System.Web.UI.WebControls.TableRow  tr   = null;
                    System.Web.UI.WebControls.TableCell col1 = null;
                    System.Web.UI.WebControls.TableCell col2 = null;
                    System.Web.UI.WebControls.TableCell col3 = null;
                    System.Web.UI.WebControls.TableCell col4 = null;
                    System.Web.UI.WebControls.TableCell col5 = null;

                    tr   = new System.Web.UI.WebControls.TableRow();
                    col1 = new System.Web.UI.WebControls.TableCell();
                    col2 = new System.Web.UI.WebControls.TableCell();
                    col3 = new System.Web.UI.WebControls.TableCell();
                    col4 = new System.Web.UI.WebControls.TableCell();
                    col5 = new System.Web.UI.WebControls.TableCell();

                    col1.Text = "Sr#";
                    col2.Text = "Subject";
                    col3.Text = "Title";
                    col4.Text = "Author";
                    col5.Text = "Publication";
                    col1.Style.Add("font-weight", "bold");
                    col2.Style.Add("font-weight", "bold");
                    col3.Style.Add("font-weight", "bold");
                    col4.Style.Add("font-weight", "bold");
                    col5.Style.Add("font-weight", "bold");

                    tr.Cells.AddRange(new System.Web.UI.WebControls.TableCell[] { col1, col2, col3, col4, col5 });
                    tbl.Rows.Add(tr);
                    int j = 0;
                    foreach (var item in bookRequestDetails)
                    {
                        j   += 1;
                        tr   = new System.Web.UI.WebControls.TableRow();
                        col1 = new System.Web.UI.WebControls.TableCell();
                        col2 = new System.Web.UI.WebControls.TableCell();
                        col3 = new System.Web.UI.WebControls.TableCell();
                        col4 = new System.Web.UI.WebControls.TableCell();
                        col5 = new System.Web.UI.WebControls.TableCell();

                        col1.Text = Convert.ToString(j);
                        col2.Text = item.Subject;
                        col3.Text = item.Title;
                        col4.Text = item.Author;
                        col5.Text = item.Publication;
                        tr.Cells.AddRange(new System.Web.UI.WebControls.TableCell[] { col1, col2, col3, col4, col5 });
                        tbl.Rows.Add(tr);
                    }

                    StringBuilder sb = new StringBuilder();
                    System.Web.UI.HtmlTextWriter ht = new System.Web.UI.HtmlTextWriter(new System.IO.StringWriter(sb));
                    tbl.RenderControl(ht);
                    string html = ht.InnerWriter.ToString();

                    emailText = emailText.Replace("{{BOOK_REQUESTS}}", html);
                    UserManager.SendEmail(model.Student.UserId, "Book Request Received", emailText);

                    return(JsonNet(new JsonResponse {
                        MsgType = MessageType.Success, Messages = new List <string>(), RedirectUrl = Url.Action("RequestSuccess", "Library", null, Request.Url.Scheme)
                    }, JsonRequestBehavior.AllowGet));
                }
            }
            catch (Exception ex)
            {
                ErrorNotification(ex);
                var messages = new List <string>();
                messages.Add(ex.Message + ex.InnerException ?? ex.InnerException.Message);
                return(JsonNet(new JsonResponse {
                    MsgType = MessageType.Error, Messages = messages
                }, JsonRequestBehavior.AllowGet));
            }
            //return PartialView("_BookRequestDetails", model.BookRequestDetails);
        }