/// <summary>
        /// Method which generates quote for automated process after submiting the request online
        /// </summary>
        /// <param name="userModel">Details of the user request (from the web)</param>
        /// <returns>ID of the quote</returns>
        public int CreateAutomatedQuote(QuoteRequestModel userModel)
        {
            var organization = _db.Organizations.First(o => o.VAT == userModel.data.oib && o.SubjectBusinessUnit == string.Empty);
            var quotes       = _db.Quotes.Count(q => q.RelatedOrganizationId == organization.MerId && q.InsertDate.Year == DateTime.Now.Year);

            if (quotes >= 1)
            {
                quotes++;
            }

            var quoteCount = quotes == 0 ? 1 : quotes;

            var quoteNumber = organization.MerId + @"-" + DateTime.Now.Year + @"-" + DateTime.Now.Month + @"/" + quoteCount;

            _db.Quotes.Add(new Quote()
            {
                QuoteNumber           = quoteNumber,
                RelatedOrganizationId = organization.MerId,
                AssignedTo            = "Moj-eRačun",
                StartDate             = DateTime.Today,
                EndDate             = DateTime.Today.AddDays(7),
                QuoteType           = Quote.QuoteTypeEnum.ContractFixed,
                QuoteStatus         = Quote.QuoteStatusEnum.Created,
                QuoteSum            = 0,
                QuoteSumTotal       = 0,
                ContractDuration    = 36,
                AcquireEmailPayment = true,
                InsertDate          = DateTime.Now,
                CreatedBy           = "Moj-eRačun"
            });
            _db.SaveChanges();

            return(_db.Quotes.First(q => q.QuoteNumber == quoteNumber).Id);
        }
Exemple #2
0
 public IHttpActionResult AddQuote(QuoteRequestModel requestModel)
 {
     if (ModelState.IsValid)
     {
         var quoteEntity = new QuoteEntity
         {
             Value = requestModel.Value
         };
         _quoteService.AddQuote(quoteEntity);
         _hubContext.Clients.Group("add").AddQuote(quoteEntity);
     }
     return(Ok());
 }
Exemple #3
0
 public IHttpActionResult DeleteQuote(QuoteRequestModel requestModel)
 {
     if (ModelState.IsValid)
     {
         var quoteEntity = new QuoteEntity
         {
             Id    = requestModel.Id,
             Value = requestModel.Value
         };
         _quoteService.DeleteQuote(requestModel.Id);
         _hubContext.Clients.Group("delete").DeleteQuote(requestModel.Id);
     }
     return(Ok());
 }
Exemple #4
0
        [Obsolete] //temporary marker
        public JsonResult RegisterQuoteRequest()
        {
            var model       = new QuoteRequestModel();
            var returnModel = new ClickVoxApiResponse();

            if (TryUpdateModel(model))
            {
                if (model.type == "ponuda")
                {
                    if (_db.Organizations.Any(o => o.VAT == model.data.oib && o.SubjectBusinessUnit == string.Empty))
                    {
                        var merId = _db.Organizations.FirstOrDefault(o => o.VAT == model.data.oib && o.SubjectBusinessUnit == string.Empty).MerId;
                        _organizationHelperMethods.SyncOrganizationInformation(merId);


                        // Creating the folder to store quote and contract draft
                        var path = System.IO.Directory.CreateDirectory(System.IO.Path.Combine(App.ExportPathGlobal + "Apis/RegisterQuoteRequest/" + model.data.oib + "_"
                                                                                              + model.data.imeIPrezime + "_" + DateTime.Now.ToString("yyyyMMdd-HHmm")));

                        // Creating database entity
                        var newEntity = _db.ClickVoxQuoteRequests.Add(new ClickVoxQuoteRequest()
                        {
                            RelatedOrganizationId   = _db.Organizations.FirstOrDefault(o => o.VAT == model.data.oib && o.SubjectBusinessUnit == string.Empty).MerId,
                            RequestEmail            = model.data.eMail,
                            RequestPhoneNumber      = model.data.telefon,
                            RequestNote             = model.data.napomene,
                            RequestCreatorName      = model.data.imeIPrezime,
                            RequestOrganizationName = model.data.nazivTvrtke,
                            RequestNumberOfInvoices = model.data.mjesecniBrojRacunaPremaPravnimOsobama,
                            DocumentsFolderPath     = path.FullName,
                            InsertDate = DateTime.Now
                        });
                        _db.SaveChanges();


                        var package = _quoteHelperMethods.DefinePackage(int.Parse(model.data.mjesecniBrojRacunaPremaPravnimOsobama)); // define package for Quote
                        var quote   = _quoteHelperMethods.CreateAutomatedQuote(model);                                                // get QuoteID
                        _quoteHelperMethods.CreateQuoteLinesForAutomatedQuote(package, quote);                                        // create QuoteLines

                        // prepare HTML for Quote and save PDF
                        var htmlModel = new AutomaticQuotePdfViewModel()
                        {
                            Quote            = _db.Quotes.Find(quote),
                            User             = new ApplicationUser(),
                            AutomaticRequest = newEntity
                        };
                        var htmlContent = this.RenderViewToString("~/Areas/Sales/Views/Shared/PdfQuoteAutomatic.cshtml", htmlModel);

                        _quoteHelperMethods.SavePdfQuote(path.FullName, htmlContent);

                        // prepare Contract Draft
                        var contractDraftModel = new ExportContractDraftViewModel()
                        {
                            QuoteId        = quote,
                            Date           = DateTime.Today.ToShortDateString(),
                            Signer         = "_______________",
                            Position       = "_______________",
                            Header         = "_______________",
                            OrganizationId = newEntity.RelatedOrganizationId,
                            SuggestedDate  = DateTime.Today
                        };

                        _contractsHelperMethods.CreateDraft(contractDraftModel, "Moj-eRačun");

                        var htmlContractModel = new ExportContractDraftPdfViewModel()
                        {
                            Quote         = _db.Quotes.Find(quote),
                            ContractDraft = _db.ContractDrafts.OrderByDescending(c => c.Id).First(c => c.RelatedQuoteId == quote)
                        };

                        var htmlContractContent = this.RenderViewToString("~/Areas/Sales/Views/Shared/Contract.cshtml", htmlContractModel);

                        _contractsHelperMethods.SavePdfDraft(path.FullName, htmlContractContent);

                        // send email
                        var filePaths    = System.IO.Directory.EnumerateFiles(path.FullName);
                        var quoteFile    = System.IO.Path.Combine(filePaths.First(x => x.Contains("Ponuda")));
                        var contractFile = System.IO.Path.Combine(filePaths.First(x => x.Contains("Ugovor")));

                        var quoteAtt     = new Attachment(quoteFile);
                        var contractAtt  = new Attachment(contractFile);
                        var promoAtt     = new Attachment(AppDomain.CurrentDomain.BaseDirectory + "Content/Zasto_Moj-eRacun.pdf");
                        var priceListAtt = new Attachment(AppDomain.CurrentDomain.BaseDirectory + "Content/Cjenik_Elektronički računi d.o.o..pdf");

                        _helperMethods.SendAutomaticQuoteEmail("*****@*****.**", model.data.eMail, AppDomain.CurrentDomain.BaseDirectory + "Content/mail_files/automatic_quoteRequest.html",
                                                               quoteAtt, contractAtt, promoAtt, priceListAtt);

                        // return response
                        returnModel.Status  = "OK";
                        returnModel.Message = "Uspješno je zabilježen zahtjev za ponudom!";
                    }
                    else
                    {
                        returnModel.Status  = "ERROR";
                        returnModel.Message = "Nepostojeća tvrtka u Moj-CRM sustavu!";
                    }
                }
                else
                {
                    returnModel.Status  = "ERROR";
                    returnModel.Message = "Pogrešan tip poruke!";
                }
            }
            else
            {
                returnModel.Status  = "ERROR";
                returnModel.Message = "Greška prilikom bilježenja zahtjeva za ponudom!";
            }

            return(Json(returnModel));
        }